添加到 Symfony 表单操作

Bra*_*age 0 symfony-forms symfony bootstrap-4

我创建了一个带有选项卡的页面(使用引导程序),并且所有选项卡都有自己的表单。而且它们都工作得很好。我的问题是当我收到表单错误时,我想打开错误所在的选项卡。

我当前的控制器代码:

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()) {
Run Code Online (Sandbox Code Playgroud)

AddFormType.php 中的函数

    public function buildForm(FormBuilderInterface $builder, array $options) {
        $builder
                ->add(...)
                ->add(...)
                ->add(...)
                ->getForm()
        ;
    }
Run Code Online (Sandbox Code Playgroud)

我不是自己创建表单,我使用的是 symfony 表单组件,但我不确定如何修改表单方法以将表单哈希(例如 /add#list-tab1)添加到表单方法中。

{{ form_start(AddForm) }}

{{ form_row(AddForm.name1) }}
{{ form_row(AddForm.name2) }}
{{ form_row(AddForm.save) }}

{{ form_end(AddForm) }}
Run Code Online (Sandbox Code Playgroud)

小智 5

您可以使用第三个参数传递哈希值createForm method

$form = $this->createForm(
    \App\Form\Add::class,
    $entityAdd,
    ['action' => '#list-tab1']
);
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用该方法并检索文件中该方法setAction()中的选项:buildForm()AddFormType.php

$builder
    ->setAction($options['action'])
    ->add(...)
Run Code Online (Sandbox Code Playgroud)

注意:仅在方法中使用哈希setAction()(而不是完整路由),只有在将表单提交到当前路由时才有效。

您必须替换#list-tab1为真实的选项卡 ID。