2014-04-16 82 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