1

我有一个名为 article 的学说-phpcr-odm 文档,我想在更新每篇文章之前对一个字段进行 slugify。
该事件会针对教义-orm 实体触发,但不会针对教义-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}
4

2 回答 2

1

根据Docs,Doctrine-PHPCR-ODM 事件的工作方式与 Doctrine ORM 事件相同。唯一的区别是:

  • 分别使用标签名称教义_phpcr.event_listener。 doctrine_phpcr.event_subscriber代替doctrine.event_listener;
  • 期望参数是 class Doctrine\Common\Persistence\Event\LifecycleEventArgs
于 2016-09-23T09:45:28.080 回答
-1
`/** 
  * @Document 
  */
class Article
{
    [...]

    /**
     * @PreUpdate
     * @PrePersist
     */
    public function slugifiyField()
    {
       $this->yourField = yourSlugifyFunction($this->yourField);
    }
}

然后,添加一个带有preUpdate注释的函数(我也在PrePersist创建文章时添加了 slugify)

编辑:根据您的评论,我删除了HasLifeCycleCallback注释,但看起来您可以Pre/PostUpdate直接在文档实体中使用注释。

于 2016-09-23T09:32:42.900 回答