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

20

У меня есть SuperType Форма для сущности Super .

В этой форме у меня есть поле collection 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 ?

Конечно, то, что я пробовал передать эту опцию через конструктор, не работает.

    
задан alex.dominte 18.03.2013 в 15:18
источник

2 ответа

31

Вы можете передать массив параметров вашему типу childType как следующим образом:

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder->add('childrens', 'collection', array(
            'entry_type' => new ChildType(),  
            'entry_options'  => array(
                'my_custom_option' => true,
            ),
    // ...

}
    
ответ дан Ahmed Siouani 18.03.2013 в 15:27
источник
  • Рассмотрите возможность обновления своего ответа, поскольку это устарело сейчас –  Trix 24.12.2016 в 16:25
12

В Symfony 3 это называется entry_options .

$builder->add('childrens', CollectionType::class, array(
    'entry_type'   => ChildType::class,
    'entry_options'  => array(
        'my_custom_option'  => true
    ),
));
    
ответ дан Georgij 19.10.2016 в 12:04
источник