Я пытаюсь расширить форму формы Symfony 2.8, следуя этому http://symfony.com/doc/2.8/form/create_form_type_extension.html
В моей форме ObjectType
меня есть что-то вроде этого, где я создаю свою форму. Моя форма включает поле типа MyExtendedType
public function buildForm(FormBuilderInterface $builder, array $options) { $passed_options = array('aKey'=>'aValue', ...); $builder ->add('someotherfield', 'SomeOtherStandardType', ..) ->add('fieldname', 'AppBundle\Form\Type\MyExtendedType', $passed_options) ->add('someotherfield', 'SomeOtherStandardType', ..) //... ; }
В моем MyExtendedType
меня есть это, в котором я хочу заменить FormEvents::PRE_SET_DATA
в FormEvents::PRE_SET_DATA
public function getParent() { return 'Symfony\Bridge\Doctrine\Form\Type\EntityType'; } public function buildForm(FormBuilderInterface $builder, array $options) { parent::buildForm($builder, $options); $builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) use ($builder, $options) { $form = $event->getForm()->getParent(); $modified_options = $options; //this is not correct because there are all the resolved options of the field $modified_options['aKey'] = 'anotherValue'; $form->add($builder->getName(), 'Symfony\Bridge\Doctrine\Form\Type\EntityType', $modified_options); }); }
Проблема в том, что в MyExtendedType
мне нужно получить доступ только к $passed_options
. В $options
меня есть все разрешенные параметры, которые инициализируются из компонента Form, и в качестве предыдущего кода поле неправильно построено из-за наличия опций в отличие друг от друга (например, query_builder, choice, choice_list .. ).
Вот вопрос: как я могу получить доступ только к $passed_options
используя компонент Form? Я не хочу устанавливать свойства в ObjectType
, чтобы иметь общий подход.