2014-04-16 83 views
0

我正在用symfony 2做一个基本的搜索表单。我对routing.yml文件的配置有问题。Symfony 2搜索表单路由设置

我的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。如果我这样做,就像pattern: /{_locale}/search/{keyword}然后窗体页面给出错误{{ path('adhl_front_search') }}

其次,我怎么能通过关键字(计算机在上述情况下)价值我的控制器?请帮我解决这个问题。

回答

0

最简单的方式做,这是

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

,并在控制器预期$关键变量, 但这不是最好的办法...

但尝试这样做

pattern: /{_locale}/search/ 

我有这个在我的项目之一,它的工作原理

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

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

我的routing.yml文件改变'模式:/ {_区域} /搜索/'我得到'恩/搜索/关键字= computer'网址在提交搜索表单时。我得到这个错误'控制器的URI“/ en /搜索/”不可调用。' – Salman

+0

编辑答案 –

+0

离子我尝试与'$关键字= $ request-> get('关键字');'和我收到我的控制器中的关键字值。我的搜索表单现在正在您的善意帮助下工作。非常感谢你。 – Salman