SonataAdmin preBatch事件,用于侦听器/订阅者

时间:2018-05-29 18:10:49

标签: symfony sonata-admin

是否有任何选项可以捕获订阅者/侦听者中的奏鸣曲批量操作?

已经尝试过使用像 sonata.admin.event.persistence.pre_batch ,但它不起作用

为什么我需要它?

当用户批量删除包含图像的实体(后面有工作自定义上传器系统)时,我也应该从文件系统中删除所有图像。

我当前的配置

一切都在这里,我想添加pre_batch事件,但到目前为止还没有成功)

    image.uploader.subscriber:
    class: AdminBundle\EventListener\ImageUploaderSubscriber
    arguments:
        - '@image.remover'
        - '@image.uploader'
    tags:
        - {name: kernel.event_listener, event: sonata.admin.event.persistence.pre_persist, method: prePersist}
        - {name: kernel.event_listener, event: sonata.admin.event.persistence.pre_update, method: preUpdate}
        - {name: kernel.event_listener, event: sonata.admin.event.persistence.pre_remove, method: preRemove}

似乎没有实现此事件的钩子,因为它只能从Admin Class中调用它。

那么,也许可以选择自己创建Event?

1 个答案:

答案 0 :(得分:1)

Sonata管理模型管理器(由批量删除使用)实际上是在实体上进行迭代。所以你可以在doctrine生命周期回调中挂钩并在那里做你的逻辑。

但总的来说,preBatch操作不会触发任何事件,但您仍然可以在管理类中覆盖此preBatchAction并从那里触发您的事件。