0

既存のオブジェクトから取得したデータをフォームに事前入力する方法についてのガイダンスを探しています。メソッドsetDataで動作するはずだと思いますが、次のような単純なものを期待してい $form->setData($existingObject)ましたが、成功しませんでした。

より良い説明のために、簡単な例を見てみましょう。
ユーザーが個人データを入力するフォームがあります。form.factory を呼び出してコントローラにフォームを作成し、

$form = $this->get('form.factory')->create(new personType());

フォーム クラス "personType" があり、このフォーム クラスには "person" という data_class オブジェクトが定義されています。ユーザーがフォームを送信すると、データはオブジェクト person に保存され、このオブジェクトはセッションに保存されます。オプションでフォームを再度開き、セッションに保存されたオブジェクトに保存されたデータを入力する必要があります。

4

1 に答える 1

0

コントローラーで、オブジェクトを作成/検索してから createForm に渡す必要があります

$task = 新しいタスク();
$task->setTask('ブログ投稿を書く');
$task->setDueDate(new \DateTime('tomorrow'));

$form = $this->createForm(new TaskType(), $task);

http://symfony.com/doc/master/book/forms.html#creating-form-classes

あなたの例では、試してください

$人 = ...;
$form = $this->get('form.factory')->create(new personType(), $person);

于 2013-02-02T13:07:45.113 に答える