SonataAdmin preBatch Событие для использования в слушателе / ​​подписчике - PullRequest
0 голосов
/ 29 мая 2018

Есть ли возможность перехватить пакетное действие сонаты внутри подписчика / слушателя?

Уже пытались использовать что-то вроде sonata.admin.event.persistence.pre_batch , но это не такt работа

Зачем мне это нужно?

Когда пользователь выполнит пакетное удаление объектов, которые содержат изображения (за ним работает пользовательский sys-загрузчик), я должен удалить всетакже изображения из fileSystem.

Моя текущая конфигурация

( Здесь все работает , и я также хочу добавить событие 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}

Кажется, что ловушка для этого события не реализована, так как ее можно вызвать только из класса администратора.

Итак, возможно, есть возможность создать событие самостоятельно?

1 Ответ

0 голосов
/ 30 мая 2018

Администратор модели Sonata (используется для пакетного удаления) фактически выполняет итерации по объектам.Таким образом, вы можете подключиться к обратным вызовам жизненного цикла доктрины и выполнять свою логику там.

Но в целом действие preBatch не вызывает событие, но вы все равно можете переопределить это preBatchAction в своем классе администратора и запуститьсобытие оттуда.

...