2016-03-03 16 views
8

Ich habe die folgende Form:Auswahlfeld Standardwert

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder 
    ->add('type', ChoiceType::class, array(
     'expanded' => true, 
     'multiple' => false, 

     'choices' => array(
      'Friend' => 'friend', 
      'Guide' => 'guide' 
     ) 
    )); 
} 

Wie kann ich ‚Freund‘ machen Kontrollkästchen standardmäßig aktiviert werden, wenn das Formular wiedergegeben wird?

Antwort

7

Ich denke, Sie sollten mit data Option versuchen, aber es ist nur in dem Fall, wo Sie nicht einmal eine Daten in Ihrem Objekt gespeichert haben, weil es sonst überschreiben wird.

Wichtig: Es ist gut für Aktion erstellen, aber nicht für Bearbeitungsaktion.

public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder 
     ->add('type', ChoiceType::class, array(
      'expanded' => true, 
      'multiple' => false, 

      'choices' => array(
       'Friend' => 'friend', 
       'Guide' => 'guide' 
      ), 
      'data' => 'friend' 
     )); 
    } 

Official link

Extract:

Wenn Sie ein Formular erstellen, zunächst jedes Feld zeigt den Wert der entsprechende Eigenschaft der Domain-Objekts Form (wenn ein Objekt ist an die Form gebunden). Wenn Sie den Anfangswert für die Form oder nur ein einzelnes Feld außer Kraft setzen möchten, können Sie diese in der Daten Option

+0

Danke, es hat funktioniert! mit lowcased '' data '=>' friend'' –

+1

Gern geschehen, ich aktualisiere für zukünftige Leute in derselben Situation wie deine. – pbenard

+3

Ich glaube nicht, dass dies sicher ist: Aus symfony-eigenen Dokumenten> __Die Datenoption überschreibt immer den Wert, der beim Rendern aus den Domain-Daten (Objekt) übernommen wird. Dies bedeutet, dass der Objektwert auch überschrieben wird, wenn das Formular ein bereits persistentes Objekt bearbeitet, wodurch es beim Speichern des Formulars den Wert verliert .__ – user2268997

6

Verwenden Sie das empty_data Formularfeld Option. (nicht data, da es alle veröffentlichten Daten außer Kraft setzt, sofern Sie sie nicht dynamisch festlegen).

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder 
    ->add('type', ChoiceType::class, array(
     'expanded' => true, 
     'multiple' => false, 

     'choices' => array(
      'Friend' => 'friend', 
      'Guide' => 'guide' 
     ), 
     'empty_data' => 'friend' 
    )); 
} 

Eine weitere Option für komplexe Fälle ist Sf Dynamic Form Events zu verwenden.

Verwandte Themen