2012-08-08 18 views
20

Ich benutze Symfony2 und FOSUserBundle.Erzwinge ein Feld, das nicht benötigt wird

Genau wie in der Dokumentation beschrieben, habe ich eine "name" -Eigenschaft in der Benutzer-Entität überschrieben und erstellt.

Ich mache alles Notwendige und schließlich bekomme dieses Feld in der Formularansicht angezeigt werden.

Die Sache ist: Wenn ich gehe form_widget(form.name) und die Eingabe HTML-Tag generiert wird, wird eine erforderliche = "erforderlich" -Eigenschaft innerhalb es generiert. Und das bewirkt, dass der Motor die Eingabe rot annimmt, wenn das Feld nicht ausgefüllt ist.

Wie kann ich dem Symfony2 mitteilen, dass dieses Feld nicht obligatorisch ist? Ich denke, dass es hier zu sein hat:

 parent::buildForm($builder, $options); 

    // add your custom field 
    $builder->add('name', 'text', array('label' => 'form.name')); 
    $builder->remove('username'); 

oder hier:

/** 
* @ORM\Column(type="string", length="255") 
* 
* @Assert\MinLength(limit="0", message="The name is too short.", groups={"Registration", "Profile"}) 
* @Assert\MaxLength(limit="255", message="The name is too long.", groups={"Registration", "Profile"}) 
*/ 
private $name; 

Antwort

47
$builder->add('name', 'text', array('label' => 'form.name','required' => false)); 
+5

+1 - Vielleicht gibt hinzuzufügen ist, dass dies nur die HTML5-Validierung auf das Formularelement hält. Alle Behauptungen usw. von deiner Entität sind immer noch aktiviert und müssen noch gültig sein, bevor die Entität bestehen bleiben kann. – insertusernamehere

+3

Gibt es eine Möglichkeit, dies über Validierungsgruppen zu tun? Ich kann nicht scheinen, dass sie die html5-erforderlichen Attribute beeinflussen, was Validierungsgruppen fast nutzlos für mich macht. –

Verwandte Themen