添加到 Symfony 表单操作
Add to Symfony form action
我创建了一个带有选项卡的页面(使用 bootstrap),所有选项卡都有自己的形式。他们都运作良好。我的问题是当我收到表单错误时,我想打开错误所在的选项卡。
我当前的控制器代码:
public function add(Request $request, EntityManagerInterface $em): Response {
$this->denyAccessUnlessGranted('ROLE_USER');
$entityAdd = new \App\Entity\add();
$form = $this->createForm(\App\Form\Add::class, $entityAdd);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
函数在AddFormType.php
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder
->add(...)
->add(...)
->add(...)
->getForm()
;
}
我不是自己创建表单,我使用的是 symfony 表单组件,但我不确定如何修改表单方法以将表单哈希(例如 /add#list-tab1)添加到表单方法。
{{ form_start(AddForm) }}
{{ form_row(AddForm.name1) }}
{{ form_row(AddForm.name2) }}
{{ form_row(AddForm.save) }}
{{ form_end(AddForm) }}
可以用createForm method
的第三个参数传递hash:
$form = $this->createForm(
\App\Form\Add::class,
$entityAdd,
['action' => '#list-tab1']
);
然后,您可以使用 setAction()
方法并在 AddFormType.php
文件中检索 buildForm()
方法中的选项:
$builder
->setAction($options['action'])
->add(...)
注意:仅在 setAction()
方法中使用散列(而非完整路由),仅当表单提交到当前路由时才有效。
您必须将 #list-tab1
替换为真实的标签 ID。
可以直接在form_start()
的参数中传递动作,在Twig模板中:
{{ form_start(form, { action: '/add#list-tab1' }) }}
请参阅 Symfony doc 关于此字段选项。