Intereting Posts
AWS увеличил число пользователей Запуск командной строки PHP через PHP-FPM mysql_query сохранить тип данных, созданный в таблице при возврате? Как ограничить мое приложение на одной вкладке браузера? Лучшие методы оптимизации сайтов LAMP для скорости? Symfony Doctrine Migrations, как я могу использовать несколько менеджеров сущностей NetSuite – поиск PHP для получения более 1000 записей Предупреждение: mysql_select_db () Доступ запрещен для пользователя '' @ 'localhost' (с использованием пароля: НЕТ) создавая основной класс, который расширяет другой ключевой класс codeigniter PHP Унаследованный родительский метод не может получить доступ к частной собственности ребенка Как выполнить несколько запросов mysql вместе в PHP? читать содержимое внешней веб-страницы и получать конкретные элементы Ошибки / предупреждения PHP DOMDocument на html5-тегах Отправка SMS с помощью модема GSM «MD5 расшифровывает» php-функцию для хранимой функции MySQL

Как передать параметры CustomType в поле `collection` Symfony 2.1?

У меня есть форма 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 ), ));