2013-03-18 4 views
17

私はSuperTypeフォームfor Entity Superです。この形式では `collection`フィールドのCustomTypeにオプションを渡す方法Symfony 2.1?

は、私は012を変更するにはどうすればよい
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 
)); 
} 

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:

エンティティChildためChildTypeフォームタイプのcollectionフィールドを持っていますこのSuperTypeフォームの値はのみですか?

もちろん、このオプションをコンストラクタ経由で渡してみましたが動作しません。 symfonyの3で

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

} 

答えて

28

あなたのchildTypeにarray of optionsを渡すことができます。

$builder->add('childrens', CollectionType::class, array(
    'entry_type' => ChildType::class, 
    'entry_options' => array(
     'my_custom_option' => true 
    ), 
)); 
+2

これは現在サポートが終了しています – Trix

関連する問題