2011-06-27 46 views
0

我已經接管了另一個開發人員的項目,並且對cakephp相當新。希望我能以適當的方式制定我的問題和方法。cakephp路由:顯示特定的搜索結果

我有一個頁面,我想要顯示特定的搜索結果,我希望用特定的URL命名它。此URL返回正確的結果:

http://www.advancelegaljobs.com/jobs/search/radius:Massachusetts-Boston

這是我想使用的網址:

http://www.advancelegaljobs.com/boston-legal-jobs

我已經嘗試在routes.php文件的許多變化,但沒有似乎工作。例如:

Router::connect('/boston-legal-jobs', array('controller' => 'jobs', 'action' => 'search', 'radius:Massachusetts-Boston')); 

Router::connect('/boston-legal-jobs', array('controller' => 'jobs', 'action' => 'search'), array('passedArgs'=>array('radius','Massachusetts-Boston'))); 

任何幫助,將不勝感激。

已更新:

我想我正在接近這一點。路由改變爲:

Router::connect('/boston-legal-jobs', array('controller' => 'jobs', 'action' => 'search', array('radius' => 'Massachusetts-Boston'))); 

產生此當我登錄passedArgs:

( [0] =>數組 ( [半徑] =>位於美國馬薩諸塞州波士頓 )

當我使用產生正確結果的URL時,這是記錄的內容:

( [半徑] =>位於美國馬薩諸塞州波士頓 )

所以我猜我的代碼被嵌套我的陣列中的一個無名數組?任何想法糾正這個?

感謝

回答

1

也許嘗試添加此:

Router::connectNamed(array('radius'));

當進行定製路線,一個常見的問題是使用命名參數將打破您的自定義路線。爲了解決這個問題,你應該通知路由器哪些參數是命名參數。

參見Named Parameters

+0

謝謝羅斯。這是有道理的,但不幸的是它仍然會返回所有的搜索結果。搜索行爲循環遍歷一系列參數,地區,專業,行業等,所以一個想法就是做一個剛剛預期地區的新行動,但這似乎是一個非常長期的做法。 –

+0

我必須承認,我已經嘗試了很多,然後放棄!有點谷歌搜索揭露類似的情況,但不幸的是沒有確定的解決方案 – Ross

0

我不確定這是否是解決這個問題的最佳或正確的方法,但是經過大量的試驗和錯誤之後,這是有效的。路線:

Router::connect('/boston-legal-jobs', array('controller' => 'jobs', 'action' => 'search', array('radius' => 'Massachusetts-Boston'))); 

我的行動期待$這個 - > passedArgs [「半徑」]但在此路由,「半徑」是在數組中的第一個關鍵。

只需添加$ this-> passedArgs [0] ['radius']的另一個條件就可以了。