2013-08-17 4 views
13

Gibt es eine einfache Möglichkeit, einige CRUD-Aktionen für eine bestimmte Admin-Klasse zu deaktivieren? Z.B. Ich möchte nur eine Liste der Benutzer über das Front-End hinzugefügt, ohne die Option, sie manuell hinzuzufügen.Aktion im Sonaten-Admin-Paket deaktivieren CRUD

+0

möglich Duplikat [Syfmony2 Sonate adminBundle ohne Aktion erstellen] (http : //stackoverflow.com/questions/17923343/syfmony2-sonata-adminbundle-without-create-action) – TautrimasPajarskas

Antwort

34

In Ihrem Admin-Klasse:

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')); 
} 

Auch Routecollection an der Spitze der Admin-Klasse verwenden

use Sonata\AdminBundle\Route\RouteCollection; 

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

+4

Wie wäre es, wenn Sie eine Route nur entfernen müssten, wenn der Benutzer dies nicht tut eine bestimmte Rolle zugewiesen? –

+1

Dies funktioniert für einen Benutzertyp, aber wenn mehrere Benutzer unterschiedliche Rollen haben, wird die Aktion im Cache gespeichert. Beim Wechseln der Rollen wird der Cache geladen und die Rollen werden nicht überprüft. – marijnz0r