【发布时间】:2016-10-19 09:13:14
【问题描述】:
我愿意在提交到会话时保存一个表单(使用 FormBuilder 创建)。一旦用户回到同一页面,表单应该重新填充之前提交的信息,以防它存在。
// 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 表单包含子项,但顶层的字段似乎没有再次填充。 Children 主要由 ChoiceType 字段组成。
会话数据由所有表单数据填充。由于我没有使用 Doctrine,而只是一个普通实体,因此我认为持久性没有问题。
表单会在 POST 请求 (handleRequest) 上正确填充,但当我再次加载时 (GET) 不会。
有什么想法吗?
【问题讨论】:
-
如果你移动在
handleRequest之前设置数据的块会发生什么? -
不幸的是没有改变任何东西,@Veve