1 回答

TA貢獻(xiàn)1852條經(jīng)驗 獲得超1個贊
您當(dāng)前的代碼失敗,因為$ticketRepo = $event->getObject();它返回的Ticket對象是它上面一行中的對象,而不是預(yù)期的TicketRepository.
您需要將EntityManageror Repository(如果您有存儲庫作為服務(wù))注入您TicketSerializationSubscriber::__construct()的TicketRepository.
假設(shè)您已autowire啟用包含TicketSerializationSubscriber.
use Doctrine\ORM\EntityManagerInterface;
class TicketSerializationSubscriber implements EventSubscriberInterface
{
/**
* @var \Doctrine\ORM\EntityManager
*/
private $em;
public function __construct(EntityManagerInterface $em)
{
$this->em = $em;
}
public function onPostSerialize(ObjectEvent $event)
{
/** @var JsonSerializationVisitor $visitor */
$visitor = $event->getVisitor();
$ticket = $event->getObject();
if (!$ticket instanceof Ticket) {
//ensure object is of expected type
return;
}
/** @var TicketRepository $ticketRepo */
$ticketRepo = $this->em->getRepository(Ticket::class);
$visitor->setData('TESTING', $ticketRepo->findByTicketDeadline($ticket));
//...
}
//...
}
如果不使用,autowire您將需要手動將其添加到您的TicketSerializationSubscriber服務(wù)聲明參數(shù)中。
#app/config/services.yml
services:
#...
TicketSerializationSubscriber:
public: false
arguments: ['@doctrine.orm.entity_manager']
tags:
- { name: kernel.event_subscriber }
#...
確保在進(jìn)行更改后clear和warmupSymfony 緩存。
- 1 回答
- 0 關(guān)注
- 205 瀏覽
添加回答
舉報