我正在尝试使用KnpSnappyBundle生成PDF,并在生成我的Bill实体时将位置保存到Doctrine中。为此,我需要使用模板服务,但无法在实体内获取它。我研究了EventListener并尝试让其工作。这是我的config.yml:
我的监听器
services:
bill.listener:
class: MyCompany\CompanyBundle\EventListener\BillListener
tags:
- { name: doctrine.event_listener, event: onFlush }
我的监听器
namespace MyCompany\CompanyBundle\EventListener;
use Doctrine\ORM\Event\OnFlushEventArgs;
class BillListener
{
public function onFlush(OnFlushEventArgs $args)
{
$em = $args->getEntityManager();
$uow = $em->getUnitOfWork();
foreach ($uow->getScheduledEntityInsertions() as $insertions) {
foreach ($insertions as $entity) {
if ($entity instanceof Bill) {
$entity->setFilename("test.pdf");
$md = $em->getClassMetadata(get_class($entity));
$uow->recomputeSingleEntityChangeSet($md, $entity);
}
}
}
}
}
我的账单实体有一个setFilename函数,我想在其中保存生成的账单的位置。但是我甚至无法使其工作。