Соната Пакетные Операции И Доктрина Крючков



Я создал админку Соната (в Symfony2 пакет http://sonata-project.org/about) и я добавил событие в preRemove крюк (учение).



В нескольких словах, когда я удаляю запись, запустите curl в другой сервис.
Все работает.



Но Sonata также имеет "пакетные операции", где я могу выбрать несколько строк и выбрать"Удалить все выбранные".



Но , Если я выберу "удалить все выбранные", завиток не запустится.
В preRemove крюком (доктриной) это не называется.



Есть человек, который может мне помочь?!



Спасибо

616   2  

2 ответов:

Похоже, что действие batch delete действительно избегает вызова метода preRemove (см. Sonata\AdminBundle\Controller\CRUDController::batchActionDelete, который вызывает Sonata\DoctrineORMAdminBundle\Model\ModelManager::batchDelete).

Однако у вас есть варианты:

  1. переопределите это batchActionDelete с помощью расширения пользовательского контроллера CRUDController. SonataMediaBundle делает это .
  2. Регистрация реального события доктрины (не рекомендуется) (Symfony cookbook tutorial )

Есть еще один вариант, вы можете использовать крюк preBatchAction в вашем классе администратора.

public function preBatchAction($actionName, ProxyQueryInterface $query, array & $idx, $allElements)
{
    if ($actionName == 'delete') {
         // logic here
    }
}

См.https://sonata-project.org/bundles/admin/master/doc/reference/batch_actions.html#optional-executing-a-pre-batch-hook

Comments

    Ничего не найдено.