Symfony3表单构建器setAction不会重定向到路由

时间:2016-12-29 00:13:43

标签: php forms symfony

我有一个控制网站导航栏中搜索栏的表单:

public function searchFormAction()
    {
        $form = $this->createFormBuilder()
            ->setAction($this->generateUrl('search'))
            ->setMethod('GET')
            ->add("value", TextType::class, array('label' => false))
            ->add("Search", SubmitType::class)
            ->getForm();

        return $this->render('components/search-form.html.twig', [
            "form" => $form->createView()
        ]);
    }

如您所见,表单具有此功能的特定操作路径:

/**
     * @Route("/search", name="search")
     */
    public function searchAction(Request $request)
    {
        return $this -> render ("post/post-search.html.twig", [
            "value" =>  $request->query->get('value')
        ]);
    }

现在,这不应该只是在页面上显示值。

问题是网站在使用表单时无法重定向

因此,当我在搜索中放入foo,然后单击“提交”时,路径如下所示:

  

本地主机:8000 /页形式%5Bvalue%5D = FOO&安培;形成%5BSearch%5D =安培;形式%5B_token%5D = PsouIRAy2QaQ8j2XO_uYrs7PcaR6jyjQN3W3_xRMdgw

此外,如果我转到localhost:8000/search并尝试将任何内容放入搜索栏,则不会打印任何值。

以下是表单的呈现方式:

//search-form.html.twig
<form class="navbar-form navbar-left">
    {{ form_start(form) }}
    <div class="form-group">
        {{ form_row(form.value) }}
    </div>
    {{ form_row(form.Search) }}
    {{ form_end(form) }}
</form>

并放置在基本导航栏中:

//base.html.twig
//...
 {{ render(controller(
                'AppBundle:Form:searchForm'
                )) }}
//...

检查元素显示表单标记没有操作和方法属性

这可能是什么问题,我该如何解决?

1 个答案:

答案 0 :(得分:1)

固定!在twig文件中犯了一个简单的错误。 将表单放在html表单标记内,这样提交按钮就会发送到空表单。