У меня есть форма SuperType
для Entity Super
.
В этой форме у меня есть поле ChildType
типов формы ChildType
для Entity Child
class SuperType:
public function buildForm(FormBuilderInterface $builder, array $options) { $builder->add('childrens', 'collection', array( 'type' => new ChildType(null, array('my_custom_option' => true)), }
class ChildType:
public function buildForm(FormBuilderInterface $builder, array $options) { if ($options['my_custom_option']) { $builder->add('my_custom_field', 'textarea')); } } public function setDefaultOptions(OptionsResolverInterface $resolver) { $resolver->setDefaults(array( ... 'my_custom_option' => false )); }
Как изменить значение my_custom_option
только для этой формы SuperType
?
Конечно, то, что я пробовал передать эту опцию через конструктор, не работает.
Вы можете передать массив параметров вашему типу childType следующим образом:
public function buildForm(FormBuilderInterface $builder, array $options) { $builder->add('childrens', 'collection', array( 'entry_type' => new ChildType(), 'entry_options' => array( 'my_custom_option' => true, ), // ... }
В Symfony 3 это называется entry_options .
$builder->add('childrens', CollectionType::class, array( 'entry_type' => ChildType::class, 'entry_options' => array( 'my_custom_option' => true ), ));