2015-09-28 2 views
6

Ich verwende Symfony 2.7 mit Sonata Admin Bundle, um einige Produkte und Produktbilder zu verwalten. Ich habe das Sonata Admin Cookbook Rezept verwendet: https://sonata-project.org/bundles/admin/master/doc/cookbook/recipe_file_uploads.html für Bilder.Sonata Admin: Wie kann man die Schaltfläche "Add New" nur vom Dashboard entfernen?

Da ein Bild mit einer Produkt-ID verknüpft sein muss, möchte ich den Link "Add New" Bild im Sonata Admin-Dashboard und in der oberen Symbolleiste deaktivieren, damit jedes hochgeladene Bild ein zugeordnetes Produkt enthält. Eigentlich ist der einzige Ort, an dem Bilder hinzugefügt werden dürfen, auf der Produktseite Hinzufügen/Bearbeiten.

Ich habe versucht, die Strecke so zu entfernen, nach einigen Antworten hier gefunden: Sonata Admin Dashboard: configure actions per entity

protected function configureRoutes(RouteCollection $collection) 
{ 
    $container = $this->getConfigurationPool()->getContainer(); 

    if ($container->get('request')->get('_route') == 'sonata_admin_dashboard') { 
     $collection->remove('create'); 
    } 
} 

Aber diese Lösung ist nicht gut, weil, wenn der Cache initialisiert wird, wenn ich die Admin-Dashboard zugreifen Die Route wird überall entfernt. Wenn der Cache jedoch auf einer anderen Seite initialisiert wird, ist die Route auf allen Seiten einschließlich Dashboard vorhanden, da Sonata Admin in Vorlagen validiert, wenn die Route beim Anzeigen der Verknüpfung vorhanden ist.

Also brauche ich die Route zu existieren und den Link zu entfernen. Kann dies über die Konfiguration geschehen oder muss ich die Templates neu schreiben?

Antwort

0

In Ihrer Sonaten-Admin-Konfiguration, in der Sie Ihre Admins definieren, entfernen Sie das "Gruppen" -Tag. Es sieht ungefähr so ​​aus.

services: 
    sonata.admin.images: 
     class: AppBundle\Admin\ImageAdmin 
     tags: 
      - { name: sonata.admin, manager_type: orm, group: "Content", label: "Manage images" } 
     arguments: 
      ... 

(entfernen group: "Content" oder was auch immer Sie Ihre Gruppe gesetzt as)

Dies wird Ihr Bild admin in einem separaten Block namens "default" setzen.

Dann definieren explizit, welche Blöcke Sie auf dem Armaturenbrett zeigen, "default" Weglassen:

sonata_admin: 
    dashboard: 
     groups: 
      Content: ~ 
      AnotherGroup: ~ 
+0

Vielen Dank für Ihre Zeit bei der Beantwortung meiner Frage. In der Tat ist dies eine Methode, um den Link "Hinzufügen" von meinem Dashboard loszuwerden, aber es würde auch den Link "Liste" entfernen und ich möchte, dass der Eintrag verfügbar ist. Außerdem wird dadurch der Link in der oberen Symbolleiste nicht entfernt. –

3

dieses i Versuchen n der Admin-Klasse:

public function getDashboardActions() { 
    $actions = parent::getDashboardActions(); 
    unset($actions['create']); 
    return $actions; 
} 
+0

Dies sollte als richtige Antwort markiert werden. – user1970395

Verwandte Themen