Hinzufügen eines benutzerdefinierten Formulars innerhalb der Show-Vorlage einer Sonata-Admin-Entität

8

Ich möchte ein kleines Formular erstellen und eine Sonata Admin Show Vorlage erstellen. Was ich bisher gemacht habe, ist das Erstellen der Funktion in der benutzerdefinierten CRUD für diese spezifische Entität (Reihenfolge), die sich von Sonata's Standard-CRUD erstreckt;

%Vor%

In meiner orderAdmin habe ich die configShowFields Methode;

%Vor%

Die order_actions Vorlage sieht so aus und zeigt die relevante Funktionalität entsprechend dem Status der Bestellung und wer ist eingeloggt, also wie arbeitet man mit so vielen verschiedenen Routen?;

%Vor%

Wenn ich das versuche, bekomme ich einen Fehler;

  

Beim Rendern einer Vorlage wurde eine Ausnahme ausgelöst   ("% Co_de%" ist für den Controller nicht definiert    _sonata_admin und die   aktuelle Route '' ") in   AppBundle: PmodOrderAction: order_actions.html.twig in Zeile 3.

Ich verstehe aus der Dokumentation , die ich verwenden muss von dieser ApBundle\Controller\PmodOrderCRUDController -Methode;

%Vor%

Aber ich kann es nicht zum Laufen bringen und bin mir nicht sicher, wie man Formulare anstelle eines einfachen Link-Buttons rendern kann.

Kann jemand bitte mir helfen, mein Problem zu beheben?

    
Jack Brummer 28.07.2016, 11:28
quelle

1 Antwort

2

Das Attribut _sonata_admin (route) wird von SonataAdminBundle verwendet, um die erforderliche Administratorinstanz ( $this->admin ) abzurufen und Ihre Anforderungen konfigurieren / verarbeiten zu können:

Nach dem Hinzufügen der richtigen Routendefinition:

%Vor%

Sie müssen auch den Code _sonata_admin hinzufügen, um die richtige Anfrage an approveOrderAction() :

zu generieren %Vor%

Lassen Sie uns ein einfaches Beispiel machen:

Sie haben eine Order -Einheit und ihre Admin-Klasse: OrderAdmin in PurchaseBundle , das ist also die Service-Definition der Sonate für OrderAdmin class (Yaml):

%Vor%

Basierend auf Ihrer eigenen approveOrderAction() können Sie diese Aktion nun folgendermaßen rendern:

%Vor%

Sie müssen nur den Admin-Code hinzufügen: 'purchase_bundle.admin.order_admin' und es sollte funktionieren!

    
yceruto 10.11.2016 14:33
quelle