【问题标题】:cakephp & routes - how to use a GET param in the URLcakephp & 路由 - 如何在 URL 中使用 GET 参数
【发布时间】:2013-06-05 09:54:44
【问题描述】:

我有一个简单的 GET 表单,它允许用户输入位置,然后选择其他几个选项并执行搜索。

因此,此时此操作的 url 是: 控制器/搜索?area=london&option1=whatever&option2=whateverelse

我希望网址是: 控制器/搜索/伦敦?option1=whatever&option2=whateverelse

所以换句话说,该区域的 GET 参数将被合并到 URL 中,但不是作为 NVP。

有没有办法做到这一点?我对路由或是否有其他方式有点困惑?

谢谢

【问题讨论】:

  • 嗯。创建一个名为 search 的文件夹并在其中放置一个页面 london,而不是 search? ;)
  • 但是我需要一个文件夹来存放每个可能输入的位置,可以是英国的任何城市、城镇或村庄
  • 是的。但这是一种方法;)无论如何,我会在 .htaccess url_rewrite..
  • 您可以在控制器中为您的搜索方法指定一个参数:search($area=null) 然后在上面的示例中将“london”分配给 $area。
  • @timstermatic 如何通过 GET 表单传递这样的参数?有可能吗?

标签: php cakephp routes


【解决方案1】:

使用routingCakeDC search plugin。如果您还没有阅读有关路由的内容,您应该阅读一下,这是一个非常强大的功能。

Route::connect('/search/:city/*', array('controller' => 'search', 'action' => 'index'), array('pass' => array('city'), 'city' => 'a-zA-Z0-9_-]+')));

只是写了没有测试,如果不起作用,请尝试一下。这将使 city 成为 SearchController::index($city = null); 的第一个 arg

搜索插件将帮助您将查询参数映射到可用于从数据库中检索数据的搜索条件,请参阅它的 readme.md 操作方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-20
    • 2017-09-06
    • 2015-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多