forms - 提交的 Symfony 表单返回错误的字段值
问题描述
我正在用Symfony 4
Forms 做一些测试,我的问题的答案可能很简单,但我现在真的很困惑,我需要新的眼光来理解以下奇怪的行为。这是上下文:我有一个页面/edit
,它处理一个以非常经典的方式命名的实体的表单,Promoter
但是在通过验证后,我正在生成并设置一个随机名字,然后刷新实体(使用表单中的新数据更新和新的名字),然后我没有重定向到另一个页面,而是返回到带有新Promoter
实体的同一页面。
我的期望是看到新生成的名字,但实际上它显示的是旧名字(通过表单发送给控制器的名字),我不明白为什么?有人可以提供线索吗?
我应该添加 db 中的数据已正确更新。
控制器代码是:
/**
* @Route("/{id}/edit", name="promoter_edit", methods={"GET","POST"})
* @param Request $request
* @param Promoter $promoter
* @return Response
*/
public function editAction(Request $request, Promoter $promoter): Response
{
$form = $this->createForm(PromoterFormType::class, $promoter);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$firstname = substr(str_shuffle('abcdefghjkmnpqrstuvwxyzABCDEFGHJKMNPQRSTUVWXYZ'),0,5);
$promoter->setFirstname( $firstname );
$this->getDoctrine()->getManager()->persist($promoter);
$this->getDoctrine()->getManager()->flush();
}
return $this->render('promoter/edit.html.twig', [
'promoter' => $promoter,
'form' => $form->createView(),
]);
}
谢谢
解决方案
在我看来,当您发布表单时,您会在更新“启动器”之前创建新表单。提交表单后,您应该尝试重新加载页面。
if ($form->isSubmitted() && $form->isValid()) {
$firstname = substr(str_shuffle('abcdefghjkmnpqrstuvwxyzABCDEFGHJKMNPQRSTUVWXYZ'),0,5);
$promoter->setFirstname( $firstname );
$this->getDoctrine()->getManager()->persist($promoter);
$this->getDoctrine()->getManager()->flush();
return $this->redirect($request->getUri());
}
推荐阅读
- css - 离子5动画改变列的宽度
- ansible - 如何将来自 POSTMAN 的 JWT 令牌包含到 Ansible Playbook 中
- c# - c# Word Application PrintPreview
- amazon-web-services - 如何在同一个 VPC 中使用 terraform 配置两个 ECS 集群?
- c# - 在 Visual Studio 中构建单个小 exe 文件的问题
- sql - SQL UPDATE option_value WHERE `option_name` = '%category_%' 问题
- ios - 如何通过在iOS中对齐顶部边缘来水平放置两个标签?
- python - 一系列矩阵的快速乘法
- ios - PHPickerViewController 通过 PHAsset 加载视频
- java - 编写创建随机表达式的递归方法