2016-11-17 3 views
0

Ich habe eine FormMapper Sonata. Ich habe die Funktionen prePersist und preUpdate hinzugefügt, die einige Überprüfungen durchführen, bevor Änderungen genehmigt werden.Sonata Admin, benutzerdefinierte FlashBag

Wenn es fehlschlägt, möchte ich eine nette Fehlermeldung anzeigen. Ich habe gesehen, dass es einige Flaggen gibt, die man benutzen kann, aber nichts wirklich Interessantes. Mehr noch, eine Rückgabe false stoppt die Aktion nicht.

Des jemand wissen, wie könnte ich diese Funktion verwalten?

Vielen Dank.

Antwort

0

Ich verstehe nicht wirklich, was Sie nicht in das Dokument bekommen. Here es sagt, dass Sie in Ihrem Controller

$session->getFlashBag()->add('key', 'message'); 

Und um es in der Ansicht hinzufügen müssen:

{% for message in app.session.flashbag.get('key') %} 
    <p>{{ message }}</p> 
    {% endfor %} 
0

Sie zeigen eine Flash-Nachricht in Ihrem Haken die getRequest Methode zugreifen.

public function prePersist($object) { 
    $this->getRequest()->getSession()->getFlashBag()->add('error', 'Error message'); 
} 

Um eine Aktion aus dem Innern eines Admin Haken zu stoppen, fand ich, dass der beste Weg, um ein ModelManagerException zu werfen ist. Diese spezielle Ausnahme wird tatsächlich von der CRUDController gehandhabt. Nicht zu reinigen muss ich zugeben, aber effektiv.

Hinweis: Der Zugriff auf den Flashbag kann auch in Bezug auf Ihre SonataAdmin-Version etwas anders aussehen.

-1

Was Sie wahrscheinlich suchen, ist ein custom validator constraint.

Der Validator überprüft beim Übergeben eines Sonatenformulars automatisch alle Validator-Einschränkungen. Wenn ein Fehler auftritt, wird die Entität nicht beibehalten und es wird eine nette Nachricht angezeigt (abhängig davon, welche Constraint-Validierungsnachricht Sie festgelegt haben).

Verwandte Themen