【发布时间】:2015-01-21 13:22:15
【问题描述】:
根据How to use Doctrine Entity Listener with Symfony 2.4?,在 Symfony 中设置实体侦听器功能应该非常简单。
不幸的是,我的听众从来没有被叫过,我不知道为什么。我检查了学说包的编译器传递以及 DefaultEntityListenerResolver 类。我的侦听器被传递给 register 方法,然后应该可用。另一方面,resolve 方法似乎从未被调用过。
这是我的服务定义:
insite.entity.listener.page_node:
class: NutCase\InSiteBundle\Entity\PageNodeListener
tags:
- { name: doctrine.orm.entity_listener }
这是我的听众:
namespace NutCase\InSiteBundle\Entity;
use Doctrine\ORM\Event\LifecycleEventArgs;
class PageNodeListener
{
public function prePersist( PageNode $node, LifecycleEventArgs $event )
{
die("okay");
}
}
这里是我的实体 yaml:
NutCase\InSiteBundle\Entity\PageNode:
type: entity
table: page_node
repositoryClass: NutCase\InSiteBundle\Entity\PageNodeRepository
fields:
title:
type: string
length: 255
nullable: false
segment:
type: string
length: 255
nullable: false
url:
type: string
length: 255
nullable: false
root:
type: boolean
nullable: false
hidden:
type: boolean
nullable: false
我在 YAML 中添加了一个“entityListeners”条目,因为我认为这个条目不见了:
entityListeners:
- PageNodeListener // Also tried the full namespace
当我尝试加载 PageNode 实体时,只会导致以下错误:
[Symfony\Component\Debug\Exception\ContextErrorException]
Warning: Invalid argument supplied for foreach()
有什么建议吗?
【问题讨论】:
标签: symfony doctrine entitylisteners