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.