2015-02-10 24 views
0

我正在構建基本上單頁的Web應用程序。在完成狀態下,它將在可能的地方使用AJAX,但如果javascript不可用/關閉,我正在處理靜態http後備。Laravel中的可鏈接搜索

不管怎樣,有需要在該URL/URI以可鏈接多種事情:

  • ORDER BY(姓,名)
  • 頁碼(如果分頁)
  • 搜索術語(如果選擇)
  • 狀態/縣(如果選擇)
  • 國家(如果選擇)
  • 命令類型(如果選擇)

這看起來像這樣只使用GET變量:

my.app?page=2&order=lastname&country=usa&state=colorado&searchterm=mysearchterms&ordertype=downloadable 

但是,因爲如果我是正確的Laravel的約定是使用命名路由,所以上面的URI會看起來像:

my.app/search/usa/colorado/mysearchterms/downloadable/page/2/lastname/ 

而且,由於我發展這個部分沒有JavaScript的,我需要一個表單提交search + country + state + ordertype和鏈接爲pageorder,這意味着當用戶單擊分頁鏈接或訂單鏈接時,該URL將被覆蓋。

是否有一種簡單的方法將所有這些組合成可讀的網址,而不會相互覆蓋?

+0

GET參數(通過Input :: get('something')'訪問)在這裏是非常合法的。 – ceejayoz 2015-02-10 22:04:05

回答

0

爲什麼仍然使用GET查詢刺激搜索結果,因爲你認爲?

將輸入從搜索表單傳遞到Controller @ method_A。驗證輸入,並重定向到控制器@ method_B - 額外的GET參數數組:

return Redirect::route('search', array(
     'order' => $order, 
     'country' => $contry, 
     'state' => $lastName 
)); 

method_B檢索搜索結果,並返回結果頁面,這是因爲在網址的查詢字符串的聯。

您可以使用標準Input::get('name')獲得查詢字符串參數。分頁&page param應該使用GET字符串開箱即用。