2016-12-29 31 views
0

我有一个表格控制网站导航栏搜索栏:Symfony3表单生成的setAction不会重定向路由

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,并尝试为p取消任何东西到搜索栏中,不会打印任何值。

下面是如何的形式呈现:

//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' 
       )) }} 
//... 

检查的元件示出了形式标签没有动作和方法属性

这里有什么问题,我该如何解决?

+2

当你的表单在浏览器上呈现时,它是怎样的?你可以检查你的网络检查员,拍一张快照,并在这里发布? – CodeGodie

+1

你如何在树枝中呈现你的表单? – goto

+0

表单在检查器中没有“操作”或“方法”属性。 我已经添加了枝条渲染元素 – aln447

回答

1

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