セッションに送信する際にFormBuilderで作成したフォームを保存します。ユーザーが同じページに戻るとすぐに、フォームには、前回の送信済み情報がある場合に備えて再投入する必要があります。フォームデータをセッションに保存し、リフレッシュ時にフォームに再投入する(symfony)
// Create form
$form = $this->createForm(MappingType::class, $mapping);
$form->handleRequest($request);
// Populate it if we already have data from the request or from session, only when not submitted
if (!$form->isSubmitted() && $request->getSession()->has('mapping')) {
$form->setData($request->getSession()->get('mapping'));
}
// Save form data to session
if ($form->isSubmitted() && $form->isValid()) {
$request->getSession()->set('mapping', $form->getData());
}
MappingTypeフォームは子供がいるだけでなく、トップレベルのフィールドにはもう一度データが表示されないようです。子供は主にChoiceTypeフィールドで構成されます。
セッションデータには、すべてのフォームデータが入力されます。私はDoctrineを使用していないので、単純なエンティティであるため、永続性に関する問題はありません。
フォームはPOSTリクエスト(handleRequest)で正しく読み込まれますが、もう一度読み込むと(GET)読み込まれません。
アイデア?
'handleRequest'の前にデータを設定するブロック? – Veve
残念ながら何も変わらない@Veve – stefandoorn