2017-07-10 4 views
0

//コントローラーパート使用symfonyのフォームオプション

$form = $this->createForm($formType, $user, [ 'id' => $user->getId() ]); 

//フォームタイプ一部

public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $id = $options['id']; 

     $builder->add('profile_person_affiliations', CollectionType::class, array(
      'label' => 'Affiliation', 
      'entry_type' => \SciProfileBundle\Form\ProfilePersonAffiliationType::class, 
      'allow_add' => true, 
      'allow_delete' => true, 
      'prototype' => true, 
      'prototype_name' => '__name__', 
      'by_reference' => false, 
     )); 

    } 

/** 
* @param OptionsResolver $resolver 
*/ 
public function configureOptions(OptionsResolver $resolver) 
{ 
    $resolver->setDefaults(array(
     'id' => null 
    )); 
} 

//コレクションフォームタイプの一部

public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $id = $options['id']; 

    /** 
    * @param OptionsResolver $resolver 
    */ 
    public function configureOptions(OptionsResolver $resolver) 
    { 
     $resolver->setDefaults(array(
      'data_class' => 'SciProfileBundle\Entity\ProfilePersonAffiliations', 
      'id' => null 
     )); 
    } 

私が使用する必要がありますコレクションのオプション。今のところ私はidをParrent Form Typeには使用できますが、Collection Formタイプには使用できません。子フォームでオプションデータフォームを取得するベストプラクティスは何ですか?コレクションフォームタイプですか?

答えて

1

あなたはentry_optionsを使用することができます。

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $id = $options['id']; 

    $builder->add('profile_person_affiliations', CollectionType::class, array(
     'label' => 'Affiliation', 
     'entry_type' => \SciProfileBundle\Form\ProfilePersonAffiliationType::class, 
     'entry_options' => array('my_custom_option' => $id), 
     'allow_add' => true, 
     'allow_delete' => true, 
     'prototype' => true, 
     'prototype_name' => '__name__', 
     'by_reference' => false, 
    )); 

} 
関連する問題