コレクション付きのフォームを表示しようとしています。コレクションは空のサブフォームを表示する必要があります。プロジェクトの性質上、JavaScriptに頼ることはできません。
グーグルは役に立たず、コレクションフィールドに空のエンティティを追加しても機能しないようです。
私がこれまでに持っているもの:
public function indexAction($id)
{
$em = $this->getDoctrine()->getManager();
$event = $em->getRepository('EventBundle:EventDynamicForm')->find($id);
$entity = new Booking();
$entity->addParticipant( new Participant() );
$form = $this->createForm(new BookingType(), $entity);
return array(
'event' => $event,
'edit_form' => $form->createView()
);
}
BookingType.phpでbuildForm()
$builder
->add('Participants', 'collection')
Twigテンプレートで
{{ form_row(edit_form.Participants.0.companyName) }}
$ entity-> addParticipant(new Participant());という行を入力すると、indexAction()で、次のようなエラーが発生します。
フォームのビューデータは、スカラー型、配列型、または\ ArrayAccessのインスタンスであることが期待されていますが、クラスYanic \ EventBundle \ Entity\Participantのインスタンスです。このエラーを回避するには、「data_class」オプションを「Yanic \ EventBundle \ Entity \ Participant」に設定するか、クラスYanic \ EventBundle \ Entity \ Participantのインスタンスをスカラー、配列、または\のインスタンスに変換するビュートランスフォーマーを追加します。 ArrayAccess。
上記の行を削除すると、Twigは次のように文句を言います。
オブジェクト「Symfony\Component \ Form \ FormView」のメソッド「0」は、/ Applications / MAMP / htdocs / symfony-standard-2.1 / src / Yanic / EventBundle / Resources / views / Booking/index.html.twigに存在しません。 27行目
編集:addParticipantは、doctrine:generate:entitiesコマンドによって生成されるデフォルトの方法です
/**
* Add Participants
*
* @param \Yanic\EventBundle\Entity\Participant $participants
* @return Booking
*/
public function addParticipant(\Yanic\EventBundle\Entity\Participant $participants)
{
$this->Participants[] = $participants;
return $this;
}
私は何か間違ったことをしていると確信していますが、手がかりを見つけることができません:-(