2017-01-16 24 views
0

私は専門的なフォームを作成しようとしています。まず、プロフェッショナルに関するフォームがあり、プロパティとしての経験があります。これらの値を私のフォームに追加します:Symofony buildingサブフォーム

$builder->add('job_company'); 
$builder->add('job_position'); 

問題は、ボタンで複数の経験を生みたいということです。 私はsymphonyのCollectionTypeを使うべきですが、経験のために別の特殊なフォームを作成する必要があるかどうかわからないので、ボタンをクリックすると、別の名前の入力を作成します。それらを検証したい)。

私が使用することを試みた:

->add('experiences', CollectionType::class, array(
     'entry_type' => TextType::class, 
     'allow_add' => true, 
     'allow_delete' => true, 
    )) 

しかし、私は({{ form_widget(form.experiences)}}を)それをレンダリングしようとすると、私はこれらのエラーを取得:

AppBundle\Entity\ProfessionalExperience could not be converted to string

私も({{ form_widget(form.experiences.company)}})を試みたが、私ができますこの変数を取得しないでください。

どうすれば適切に行うことができますか?

ありがとうございます。あなたはexperiencesサブフォームが

{{ form_widget(form.experiences)}} 

ので、TextTypeであることを宣言している

答えて

1

は、単純な<input/>フィールドを作成し、その値を設定しようとしています。入力の値は、AppBundle\Entity\ProfessionalExperienceインスタンスを提供している間は単純な文字列です。そのため、このエラーが発生しています。

あなたはそれがTextTypeであることは望ましくありません。それはExperienceTypeのようなカスタムフォームクラスのいくつかの種類でなければなりません。

->add('experiences', CollectionType::class, array(
     'entry_type' => ExperienceType::class, 
     'allow_add' => true, 
     'allow_delete' => true, 
    )) 

そして、あなたはもちろん、あなたのAppBundle\Entity\ProfessionalExperienceエンティティに適したフィールドを持つようにフォームクラスを作成する必要が

+0

これは完璧なおかげで、あなたの作品 –