2013-08-17 3 views
13

Есть ли простой способ отключить некоторые действия CRUD для данного класса администратора? Например. Мне просто нужен список пользователей, добавленных через интерфейс, без возможности их добавления вручную.отключить действие в комплекте соната администратора CRUD

+0

возможно дубликат [Syfmony2 сонатной adminBundle без создания действия] (HTTP : //stackoverflow.com/questions/17923343/syfmony2-sonata-adminbundle-without-create-action) – TautrimasPajarskas

ответ

34

В классе администратора:

protected function configureRoutes(RouteCollection $collection) 
{ 
    // to remove a single route 
    $collection->remove('delete'); 
    // OR remove all route except named ones 
    $collection->clearExcept(array('list', 'show')); 
} 

также использовать RouteCollection в верхней части администратора класса

use Sonata\AdminBundle\Route\RouteCollection; 

Docs: http://sonata-project.org/bundles/admin/master/doc/reference/routing.html#removing-a-single-route

+4

Как насчет того, если вам нужно удалить маршрут, только если пользователь не назначена определенная роль? –

+1

Это работает для одного типа пользователей, но если у нескольких пользователей разные роли, действие сохраняется в кеше. При переключении ролей кеш загружается и роли не проверяются. – marijnz0r