2014-06-13 25 views
8

là có thể cập nhật trường tùy chọn sau khi thêm không?trường tùy chọn cập nhật trình tạo biểu mẫu symfony

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

cách sửa đổi trường tùy chọn ??? (setOption không tồn tại)

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

Trả lời

9

Bạn có thể chỉ cần ->add() lại lần nữa. Như tài liệu API cho thấy cho add phương pháp: Thêm hoặc thay thế một đứa trẻ mẫu

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

này có thể được sử dụng để thay đổi các yếu tố hình thức ví dụ như trong một FormEvent.


Ngoài ra các FormBuilder cung cấp một phương pháp setAttribute() mà có thể được sử dụng như sau:

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

OK nhưng tôi muốn tránh việc lặp lại code – stloc

+3

thêm phương pháp khác để câu trả lời của tôi. Xin lưu ý rằng * từ bên trong * một 'FormEvent' bạn không thể sử dụng phương pháp sau này: bạn cần phải thêm lại biểu mẫu như được định nghĩa trong phương thức cũ (vì bạn không có trình tạo sẵn có) –

+0

@ DebreczeniAndrás' $ builder-> get ('examens') 'trả về' FormBuilder', không phải là trường. Vì vậy, nó đặt thuộc tính biểu mẫu, không phải thuộc tính trường. Tôi không thể đạt được nó. – Sithu

Các vấn đề liên quan