2013-03-18 12 views
17

Mam SuperType Formularz dla Entity Super.Jak przekazać opcje do CustomType w polu `collection` Symfony 2.1?

W tej formie mam collection pole ChildType typów Formularz 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 
)); 
} 

Jak mogę zmienić my_custom_option wartość tylko dla tego formularza SuperType?

Oczywiście to, co próbowałem przekazać tę opcję za pośrednictwem konstruktora, nie działa.

Odpowiedz

28

Można zdać array of options do childType następująco:

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

} 
+2

Rozważ zaktualizowanie swojej odpowiedzi, ponieważ jest ona przestarzała – Trix

Powiązane problemy