2016-05-03 6 views
0

Ich habe Probleme mit Symfony3, um {{form_errors ([formname.field])}} Nachrichten mit einem Formular anzuzeigen, das andere Formulare einbettet.Symfony-Formular, das andere Formulare einbindet, wie man form_errors/validation.message erreicht

ich ein symfony-Projekt auf GitHub fallen gelassen habe mein Problem zu erklären: https://github.com/nyluje/symfony_test_form_embedded

Sie werden darin finden:

  • \ src \ AppBundle \ Controllers \ DefaultController.php angezeigt werden geändert der Test.
  • Unter \ src \ AppBundle \ Entity \ zwei Entitäten: EntityForFormA und EntityForFromB erstellt mit einem "field1" von EmailType.
  • Unter \ src \ AppBundle \ Form: 3 Formulardateien; 2 Sind direkt mit der EntityForFormA und EntityForFormB verknüpft: FormAType und FormBType und der letzte FormCType gibt es beide in ein Formular einbetten.

An der Spitze der \ app \ Resources Datei \ default \ index.hmtl.twig:

{{ form_start(form_a) }} 
    {{ form_label(form_a.field1) }} 
    {{ form_widget(form_a.field1) }} 
    {{ form_errors(form_a.field1) }} 
{{ form_end(form_a) }} 

{{ form_start(form_c) }} 
    {{ form_label(form_c.FormA.field1) }} 
    {{ form_widget(form_c.FormA.field1) }} 
    {{ form_errors(form_c.FormA.field1) }} 

    {{ form_label(form_c.FormB.field1) }} 
    {{ form_widget(form_c.FormB.field1) }} 
    {{ form_errors(form_c.FormB.field1) }} 
{{ form_end(form_c) }} 

Wenn Sie ein Formular A mit dem Wert "j @ j" Eintragen tun Sie bekommen: enter image description here Die Fehlermeldung "Dieser Wert ist keine gültige E-Mail-Adresse" wird deutlich angezeigt.

Nun, wenn Sie Formular C mit dem Wert „j @ j“ in beiden Feldern einreichen: enter image description here

Die Fehlermeldung „Dieser Wert ist keine gültige E-Mail-Adresse“ wird nicht angezeigt.

Weiß jemand, warum die Fehlermeldungen im Falle von FormC nicht angezeigt werden?

Antwort

2

Standardmäßig wird die Validierung nicht auf Eigenschaften angewendet, die Objekte oder Sammlungen sind. Verwenden Sie die valid constraint:

http://symfony.com/doc/current/reference/constraints/Valid.html

Sie Dosen setzen die Traverse Option als auch für Sammlungen.

+0

Danke @Richard! Wenn ich nach einem Hinweis zu einer Lösung komme, finde ich sie auch gar nicht intuitiv (ich musste ein zusätzliches EntityForFormC mit den Attributen entityForFormA und entityForFormB darin erstellen und im Controller EntityForFormA-B setzen). Ich habe festgestellt, dass es besser gewesen wäre, {{form_errors ([parentForm]. [EmbeddeForm]. [FieldOfEmbeddedFrom])}} zu verwenden, wenn {{form_label ([parentForm]. [EmbeddeForm]. [FieldOfEmbeddedFrom])) }} und {{form_widget ([parentForm]. [embeddeForm]. [fieldOfEmbeddedFrom])}}, die den Job auf diese Weise erledigen. – nyluje

Verwandte Themen