2012-07-14 7 views
10

Ich benutze für die Verwaltung von Entitäten in meiner Anwendung. Die Administratoren der Website können Videos hinzufügen, und einige von ihnen müssen zuerst von ihren Sprechern genehmigt werden. Es gibt ein Autorisierungssystem, das bereits funktioniert - ich habe einen funktionierenden Code, der einen speziellen Link generiert und den Redner benachrichtigt, der das Video genehmigen oder ablehnen kann und die Admins automatisch zurückmeldet.Sonata Admin: Fügen Sie benutzerdefinierte Trigger/Aktionen hinzu, um Aktionen aufzulisten/zu bearbeiten

Ich möchte meinen Admin-Bereich anpassen, so wird es neben den Videos eine Schaltfläche ask for authorization sein. Ich bin okay, es entweder in der Liste Aktion (/admin/acme/videos/list) oder in der Edit-Aktion irgendwo in der rechten Navigationsleiste (/admin/acme/videos/x/edit/)

Was ist der beste Ansatz, dies zu tun? Die Dokumentation sagt sehr wenig über die Anpassung von Blöcken, aber ich fand this example, die das Ding sein könnte, nach dem ich suche, aber ich konnte nicht herausfinden, wie man es benutzt.

Eine Option besteht darin, den Haken zu verwenden und der Bearbeitungsaktion ein Kontrollkästchen hinzuzufügen, aber eine Schaltfläche wäre viel schöner.

protected function configureSideMenu(MenuItemInterface $menu, $action, Admin $childAdmin = null) 
{ 
    if (!$childAdmin && !in_array($action, array('edit'))) { 
     return; 
    } 
    $admin = $this->isChild() ? $this->getParent() : $this; 
    $id = $admin->getRequest()->get('id'); 
    $menu->addChild('My action', array('uri' => 'http://google.com?id=' . $id)); 
} 

Es wird linke Seite erstellen Menü für Aktionen wie/admin/acme/Videos/x/edit /:

Antwort

26

Um eine Aktion für Bearbeitungsformular

In Ihrer Admin-Klasse hinzufügen. Mit der ID für das aktuelle Element können Sie eine benutzerdefinierte URL erstellen.

Um eine Aktion für Liste hinzu: In Ihrer Admin-Datei

protected function configureListFields(ListMapper $listMapper) 
{ 
    $listMapper 
     ->add('_action', 'actions', array(
      'actions' => array(
       'act' => array('template' => 'AcmeBundle:Video:my_temp.html.twig'), 
      ) 
     )) 
    ; 
} 
hinzufügen

Es eine Spalte mit Links hinzufügen, dann müssen Sie eine Vorlage für Ihre Spalte erstellen, so etwas wie

<a href="{{ admin.generateObjectUrl('delete', object) }}" class="delete_link" title="{% trans from 'SonataAdminBundle' %}action_delete{% endtrans %}"> 
    <img src="{{ asset('bundles/sonataadmin/famfamfam/delete.png') }}" alt="{% trans from 'SonataAdminBundle' %}action_delete{% endtrans %}" /> 
</a> 

Alle Beispiele stammen aus dem von Ihnen bereitgestellten Link. Hoffe es hilft

+0

'configureSideMenu' ist veraltet. Verwenden Sie stattdessen "configureTabMenu". – sergekv

Verwandte Themen