2014-06-13 5 views
8

ist es möglich, ein Optionsfeld nach dem Hinzufügen zu aktualisieren?symfony Formular Builder Update Option Feld

$builder 
    ->add('examens', 'entity', array(
     'class' => 'TelegrammeExamenBundle:ExamExamen', 
     'property' => 'libelle', 
     'required' => true, 
     'empty_value' => 'Sélectionnez un examen', 
     //'data' => $this->em->getReference("TelegrammeExamenBundle:ExamExamen", 510), 
     'data' => null, 
     'query_builder' => function(ExamenRepository $r) { 
      return $r->getSelectList(); 
     }, 
     'attr' => array('class' => 'bg_white_filet_gris') 
    )) 
; 

Wie ändern Feld Option ??? (SetOption existieren nicht)

if (...) $builder->get('examens')->setOption('property', 'test'); 

Antwort

9

können Sie einfach ->add() es wieder. Da die API-Dokumentation für die add Methode schlägt vor: Adds oder ein Kind auf die Form ersetzt

http://api.symfony.com/2.8/Symfony/Component/Form/FormInterface.html#method_add

Dies kann verwendet werden, um Formelemente zum Beispiel in einem FormEvent zu ändern.


Alternativ die FormBuilder ein setAttribute() Methode, die verwendet werden können, wie folgt:

$builder->get('examens')->setAttribute('property', 'test'); 
+0

OK, aber ich möchte – stloc

+3

Code-Duplizierung eine andere Methode, um meine Antwort hinzugefügt vermeiden. Bitte beachten Sie, dass * von 'innen' ein 'FormEvent' Sie diese letztere Methode nicht verwenden können: Sie müssen das Formular erneut wie in der früheren Methode definiert hinzufügen (da Sie den Builder dort nicht verfügbar haben) –

+0

@ DebreczeniAndrás ' $ builder-> get ('examens') 'gibt' FormBuilder' zurück, nicht das Feld. Daher wird das Formularattribut und nicht das Feldattribut festgelegt. Ich konnte es nicht erreichen. – Sithu