cakephp routing:显示特定的搜索结果

时间:2011-06-27 15:27:13

标签: php cakephp routing

我接手了另一位开发人员的项目,对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')));
当我记录passArgs:

时,

产生这个

(     [0] =>排列         (             [radius] =>马萨诸塞州波士顿         )

当我使用产生正确结果的URL时,这就是记录的内容:

(     [radius] =>马萨诸塞州波士顿 )

所以我猜我的代码是将我的数组嵌套在一个未命名的数组中?有没有想过纠正这个?

由于

2 个答案:

答案 0 :(得分:1)

也许尝试添加:

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

  

制作自定义路线时,常见的缺陷是使用命名参数会破坏您的自定义路线。为了解决这个问题,您应该通知路由器哪些参数要命名为参数。

请参阅Named Parameters

答案 1 :(得分:0)

我不确定这是否是解决此问题的最佳或正确方法,但经过大量试验和错误后,这是有效的方法。路线:

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

我的操作是期待 $ this-> passedArgs ['radius'] ,但在此路由中,'radius'是数组中的第一个键。

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