symfony:实体的事件侦听器不工作



我下面有这个事件监听器,但它不起作用:

<?php
namespace ProjectBackendBundleEventListener;
//src/Project/BackendBundle/EventListener/ClippedImagesManager.php
use DoctrineORMEventLifecycleEventArgs;
use DoctrineORMEventPostFlushEventArgs;
use ProjectBackendBundleEntitySubitem;
class ClippedImagesManager
{
public function preUpdate(LifecycleEventArgs $args)
{
die("Event listener!!!");
}

//src/Project/BackendBundle/Resources/config/services.yml
services:
    project.clipped_images_manager:
        class: ProjectBackendBundleEventListenerClippedImagesManager
        tags:
            - { name: doctrine.event_listener, event: preUpdate } 

在更新BackendBundle内的任何实体时,我预计会触发"事件侦听器!!"。

我以前也遇到过类似的问题。下面的剥离示例与您的相同,但要查看完整的工作示例,请访问帖子。诀窍是,在postFlush()事件中的preUpdate()之后持续。

注意:尽管这可能不是最好的解决方案,但可以使用事件订阅服务器或事件侦听器中的简单onFlush() -> $uow->getScheduledEntityUpdates()来完成。

服务.yml

services:
    entity.event_listener.user_update:
        class:  SiteFrontBundleEventListenerEntityUserUpdateListener
        tags:
            - { name: doctrine.event_listener, event: preUpdate }

事件侦听器

<?php
namespace SiteFrontBundleEventListenerEntity;
use DoctrineORMEventLifecycleEventArgs;
use SiteFrontBundleEntityUser;
class UserUpdateListener
{
    public function preUpdate(LifecycleEventArgs $args)
    {
        $entity = $args->getEntity();
        // False check is compulsory otherwise duplication occurs
        if (($entity instanceof User) === false) {
            // Do something
        }
    }
} 

相关内容

  • 没有找到相关文章

最新更新