Doctrine-PHPPCR-ODM 事件不会触发
Doctrine-PHPCR-ODM Event doesn't fire
我有一个名为article的doctrine-phpcr-odm文档,我想在更新每篇文章之前对一个字段进行slugify。
该事件针对 doctrine-orm 实体触发,但不会针对 doctrine-phpcr-odm 文档触发!
class ArticlePreUpdateListener
{
public function preUpdate(LifecycleEventArgs $args)
{
var_dump($args);
}
}
article.pre_update.listener:
class: AppBundle\EventListener\ArticlePreUpdateListener
tags:
- { name: doctrine.event_listener, event: preUpdate}
`/**
* @Document
*/
class Article
{
[...]
/**
* @PreUpdate
* @PrePersist
*/
public function slugifiyField()
{
$this->yourField = yourSlugifyFunction($this->yourField);
}
}
然后,添加一个带有 preUpdate
注释的函数(我也添加了 PrePersist
以在创建文章时进行 slugify)
编辑:根据您的评论,我删除了 HasLifeCycleCallback
注释,但看起来您可以直接在文档实体中使用 Pre/PostUpdate
注释。
根据Docs,Doctrine-PHPPCR-ODM 事件的工作方式与 Doctrine ORM 事件相同。唯一的区别是:
- 分别使用标签名称 doctrine_phpcr.event_listener。
doctrine_phpcr.event_subscriber
而不是 doctrine.event_listener;
- 期望参数是 class
Doctrine\Common\Persistence\Event\LifecycleEventArgs
.
我有一个名为article的doctrine-phpcr-odm文档,我想在更新每篇文章之前对一个字段进行slugify。
该事件针对 doctrine-orm 实体触发,但不会针对 doctrine-phpcr-odm 文档触发!
class ArticlePreUpdateListener
{
public function preUpdate(LifecycleEventArgs $args)
{
var_dump($args);
}
}
article.pre_update.listener:
class: AppBundle\EventListener\ArticlePreUpdateListener
tags:
- { name: doctrine.event_listener, event: preUpdate}
`/**
* @Document
*/
class Article
{
[...]
/**
* @PreUpdate
* @PrePersist
*/
public function slugifiyField()
{
$this->yourField = yourSlugifyFunction($this->yourField);
}
}
然后,添加一个带有 preUpdate
注释的函数(我也添加了 PrePersist
以在创建文章时进行 slugify)
编辑:根据您的评论,我删除了 HasLifeCycleCallback
注释,但看起来您可以直接在文档实体中使用 Pre/PostUpdate
注释。
根据Docs,Doctrine-PHPPCR-ODM 事件的工作方式与 Doctrine ORM 事件相同。唯一的区别是:
- 分别使用标签名称 doctrine_phpcr.event_listener。
doctrine_phpcr.event_subscriber
而不是doctrine.event_listener;
- 期望参数是 class
Doctrine\Common\Persistence\Event\LifecycleEventArgs
.