2014-06-13 22 views
8

क्या इसे जोड़ने के बाद एक विकल्प फ़ील्ड अपडेट करना संभव है?सिम्फनी फॉर्म बिल्डर अपडेट विकल्प फ़ील्ड

$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') 
    )) 
; 

फ़ील्ड विकल्प को कैसे संशोधित करें ??? (SetOption मौजूद नहीं है)

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

उत्तर

9

आप कर सकते हैं बस ->add() इसे फिर से। API दस्तावेज़ add विधि के लिए सुझाव देते हैं: जोड़ता या रूप

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

लिए एक बच्चे की जगह यह एक FormEvent में उदाहरण के लिए प्रपत्र तत्वों को संशोधित करने के लिए इस्तेमाल किया जा सकता है।


वैकल्पिक रूप सेFormBuilder एक setAttribute() विधि है जो इस प्रकार किया जा सकता है प्रदान करता है:

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

ठीक है, लेकिन मैं कोड दोहराव – stloc

+3

मेरे जवाब देने के लिए एक और तरीका जोड़ी से बचना चाहते हैं। कृपया ध्यान दें कि * अंदर * एक 'FormEvent' से आप इस बाद की विधि का उपयोग नहीं कर सकते: आपको पूर्व विधि में परिभाषित फॉर्म को दोबारा जोड़ना होगा (क्योंकि आपके पास निर्माता उपलब्ध नहीं है) –

+0

@ डेब्रेसेन्ज़ी एंड्रस ' $ बिल्डर-> प्राप्त करें ('परीक्षा') 'रिटर्न' फॉर्मबिल्डर ', फ़ील्ड नहीं। इसलिए, यह फॉर्म विशेषता सेट करता है, फ़ील्ड विशेषता नहीं। मैं इसे हासिल नहीं कर सका। – Sithu

संबंधित मुद्दे