【问题标题】:cakephp routing: display specific search resultscakephp 路由:显示具体搜索结果
【发布时间】:2011-06-27 15:27:13
【问题描述】:

我从另一个开发人员那里接手了一个项目,并且对 cakephp 还很陌生。希望我能以适当的方式提出我的问题和方法。

我有一个页面,我想显示特定的搜索结果,我希望用一个特定的 URL 来命名它。此 URL 返回正确的结果:

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

这是我希望使用的 URL:

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] => 数组 ( [半径] => 马萨诸塞州-波士顿 )

)

当我使用产生正确结果的 URL 时,记录如下:

( [半径] => 马萨诸塞州-波士顿 )

所以我猜我的代码将我的数组嵌套在一个未命名的数组中?对纠正这个有什么想法吗?

谢谢

【问题讨论】:

    标签: php cakephp routing


    【解决方案1】:

    也许尝试添加这个:

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

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

    Named Parameters

    【讨论】:

    • 谢谢罗斯。这是有道理的,但不幸的是它仍然返回所有搜索结果。搜索操作会循环通过一组参数、区域、专业、行业等,因此一个想法只是做出一个只需要区域的新操作,但这似乎是一种非常耗时的方法。
    • 我必须承认我之前尝试过几乎相同的方法并放弃了!一些谷歌搜索发现了类似的情况,但不幸的是没有明确的解决方案
    【解决方案2】:

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

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

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

    只需为 $this->passedArgs[0]['radius'] 添加另一个条件即可。

    【讨论】:

      猜你喜欢
      • 2014-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-10
      • 2021-01-25
      • 2023-04-07
      • 2013-01-14
      相关资源
      最近更新 更多