2015-09-28 61 views
6

Sto utilizzando Symfony 2.7 con Sonata Admin Bundle per gestire alcuni prodotti e immagini di prodotto. Ho usato la ricetta del Cookbook Admin Cookbook: https://sonata-project.org/bundles/admin/master/doc/cookbook/recipe_file_uploads.html per le immagini.Sonata Admin: come rimuovere il pulsante "Aggiungi nuovo" solo dalla dashboard?

Poiché a un'immagine deve essere associato un ID prodotto, desidero disattivare il collegamento "Aggiungi nuovo" immagine dal dashboard dell'amministratore Sonata e dalla barra degli strumenti in alto, in modo che qualsiasi immagine caricata abbia un prodotto associato. In realtà, l'unico posto in cui è possibile aggiungere le immagini è nella pagina di aggiunta/modifica del prodotto.

Ho cercato di rimuovere il percorso come questo, secondo alcune risposte trovate qui: 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'); 
    } 
} 

Ma questa soluzione non è buono, perché, se la cache viene inizializzata quando accedo il cruscotto di amministrazione , il percorso viene rimosso ovunque, ma se la cache viene inizializzata su una pagina diversa, il percorso sarà presente su tutte le pagine, incluso il dashboard, perché Sonata Admin convalida nei modelli se il percorso esiste durante la visualizzazione del collegamento.

Quindi, ho bisogno del percorso per esistere e per rimuovere il collegamento. Questo può essere fatto usando la configurazione o devo riscrivere i template?

risposta

0

Nella configurazione dell'amministratore sonata in cui vengono definiti gli amministratori, rimuovere il tag "gruppo". Sembra qualcosa del genere.

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

(rimuovere group: "Content" o qualsiasi altra cosa che avete il vostro gruppo impostato come)

Questo metterà il vostro amministratore di immagine in un blocco separato chiamato "default".

Poi, esplicitamente definire quali blocchi si mostra sul cruscotto, lasciando fuori "default":

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

Grazie per il vostro tempo a rispondere alla mia domanda. In effetti, questo è un metodo per sbarazzarsi del collegamento "Aggiungi nuovo" dalla mia dashboard, ma rimuoverebbe anche il collegamento "Elenco" e voglio che l'elenco sia accessibile. Inoltre, questo non rimuove il collegamento nella barra degli strumenti in alto. –

3

Prova questa i n la classe admin:

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

Questo dovrebbe essere contrassegnato come risposta corretta. – user1970395