2016-09-23 66 views
1

我有一篇名为article的doctrine-phpcr-odm文档,我想在更新每篇文章之前拼出一个字段。
事件触发了教义实体,但dosn't不会为doctrine-phpcr-odm文件启动!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} 

回答

1

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

  • 使用标记名称doctrine_phpcr.event_listener resp。 doctrine_phpcr.event_subscriber而不是doctrine.event_listener;
  • 期望参数是类 Doctrine\Common\Persistence\Event\LifecycleEventArgs
+0

是否意味着您解决了你的问题?或者它不适用于doctrine_phpcr.event_subscriber标记? (注意,如果两个标记的行为都相同,则可以添加这两个标记) – dbu

+0

@dbu是使用doctrine_phpcr.event_subscriber标记解决了problem.tnx –

0
`/** 
    * @Document 
    */ 
class Article 
{ 
    [...] 

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

然后,添加一个功能与preUpdate注释(我已经添加了PrePersist到slugify创建文章的时候也是如此)

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

+0

与ORM相反,PHPCR-ODM不使用'@ HasLifecycleCallbacks'标记(http://docs.doctrine-project.org/projects/doctrine-phpcr-odm/en/latest/reference/events html的#生命周期回调)。 –

+0

对不起,我根据我对http://docs.doctrine-project.org/projects/doctrine-mongodb-odm/en/latest/reference/annotations-reference.html#haslifecyclecallbacks的回复编辑我的回答 –