/** * @param Vote $vote * @return string * @validate $vote \Visol\Votable\Domain\Validator\VoteExistsValidator */ public function removeAction(Vote $vote) { // Send signal $signalResult = $this->getSignalSlotDispatcher()->dispatch(self::class, 'beforeVoteChange', [$vote, 'remove']); $vote = $signalResult[0]; $this->voteRepository->remove($vote); $this->view->assign('vote', $vote); // Send signal $this->getSignalSlotDispatcher()->dispatch(self::class, 'afterVoteChange', [$vote, 'remove']); $this->response->setHeader('Content-Type', 'application/json'); return json_encode(['action' => 'remove', 'success' => !$this->voteRepository->exists($vote), 'identifier' => 0]); }