如何解决使用 SF4.4
在我的 Symfony 4.4 应用程序中,我的控制器中有以下代码。我试图根据以前的提交或从数据库中提取的数据来预填充表单。重要的是,DetailsType
表单包含多个实体,因此此处的每个表单设置并不是一个干净的 1 个实体。
$postVars = $request->request->all();
$formData = [];
if (count($postVars) > 0) {
$formData = $postVars['crmbundle_register_details'];
}
$form = $this->createForm(DetailsType::class,$formData,[
'attr' => ['class' => 'reCaptchaForm'],]);
$form->setData([
'firstname' => $person->getFirstname(),'lastname' => $person->getLastname(),'email' => $person->getEmail(),'country' => $person->getCountry(),'timezone' => $person->getTimezone()
]);
我的问题是,如果我尝试使用上面的 setData
预填充表单,则它不起作用。
如果我按照下面的方式单独执行它可以工作,但我不明白为什么。我更愿意传递 setData
一个数组,而不是多次调用 setData
。
$form->get('firstname')->setData($user->getFirstname());
$form->get('lastname')->setData($user->getLastname());
$form->get('email')->setData($user->getEmail());
$form->get('country')->setData($user->getCountry());
$form->get('timezone')->setData($user->getTimezone());
解决方法
如果表单包含许多实体,最好为每个实体设置一个 embed form。在这种情况下,您根本不需要调用 setter。控制器操作代码将是:
$form = $this->createForm(DetailsType::class,$someParentEntity,[
'attr' => ['class' => 'reCaptchaForm'],]);
$form->handleRequest($request);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。