Symfony 2搜索表单路由设置

时间:2014-04-16 16:00:07

标签: php forms symfony

我正在使用symfony 2制作基本搜索表单。我对routing.yml文件的配置有问题。

我的routing.yml文件

adhl_front_search:
    pattern: /{_locale}/search
    defaults: { _controller: AdhlFrontBundle:Blog:search  }
    requirements:
        _locale: en

我的表单代码:

<form method="get" action="{{ path('adhl_front_search') }}/">
      <input type="text" value="" name="keyword" />
      <input type="submit" value="Search" />
</form>

我想要这个网址:

app_dev.php/en/search/?keyword=computer

Symfony错误:

No route found for "GET /en/search/" 

我不知道如何为搜索表单配置我的网址。在我的情况下,它期望在routing.yml中使用?keyword = computer。如果我这样做pattern: /{_locale}/search/{keyword},那么表单页面会在{{ path('adhl_front_search') }}

给出错误

其次,如何将关键字(上述情况下的计算机)值传递给我的控制器?请帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

最简单的方法是

pattern: /{_locale}/search/?keyword={key}

并在您的控制器中期望$ key变量, 但这不是最好的方式......

然而尝试这样做

pattern: /{_locale}/search/

我在我的一个项目中有这个并且它有效

编辑2: 在你的控制器中试试这个

  public function searchAction(Request $request)
    {   
        $keyword = $request->get('keyword');