Tomáš のリンクは、問題の解決に役立ちました。それが最善の解決策ではないかもしれませんが、それが私が実装した方法です:
PHPクラスを作成しました:
namespace Acme\AdminBundle\EventListener;
use Symfony\Component\HttpKernel\Event\FilterControllerEvent;
class SoftDeleteListener {
public function onKernelController(FilterControllerEvent $event) {
// Get the full name of the current controller
$controllername = $event->getRequest()->attributes->get('_controller');
$matches = array();
// Explode the name of the current controller
preg_match('/(.*)\\\(.*)Bundle\\\Controller\\\(.*)Controller::(.*)Action/', $controllername, $matches);
// preg_match should store the name of the bundle at the second index of the array
if (isset($matches[2]) && $matches[2] == "Admin") {
$controller = $event->getController();
$doctrine = $controller[0]->get('doctrine');
$em=$doctrine->getManager();
$em->getFilters()->disable('softdeleteable');
}
}
}
そして、次の行をservices.ymlに追加して、kernel.controller イベントをリッスンするようにします。
kernel.listener.admin_softdelete_listener:
class: Goldfish\AdminBundle\EventListener\SoftDeleteListener
tags:
- { name: kernel.event_listener, event: kernel.controller, method: onKernelController }
そのようにして目標を達成しました.SoftdeletableフィルターはAdminBundle全体で無効になっており、すべてのコントローラーで手動でオフにする必要はありません.