代码之家  ›  专栏  ›  技术社区  ›  Matt

如何为多个变量设置代码点火器URI段?

  •  0
  • Matt  · 技术社区  · 16 年前

    我正在编写一个应用程序,它允许您根据位置和类别筛选数据库结果。

    如果有人要在高尔夫类别下搜索利物浦,那么URI应该是 /index.php/search/Liverpool/Golf .

    如果有人想按位置而不是按类别搜索,他们将被发送到 /index.php/search/Liverpool

    但是,如果有人只想按类别筛选,他们将无法使用 /index.php/search/Golf 因为这会被位置搜索捕获。

    有没有最好的实践方法 /index.php/search/golf 被认可?关于如何向URI添加其他内容以使这两个查询不同的一些最佳实践? /index.php/search/category/Golf 也许?

    尽管这已经开始显示出 /index.php?search&category=Golf 这正是我想要避免的。

    4 回复  |  直到 16 年前
        1
  •  0
  •   Shane    16 年前

    不管您的URI段在搜索什么,最好保持它们的相关性。

    index.php/LOCATION/CATEGORY
    

    如果他们对某个位置不感兴趣,则将一个填充器传递给系统:

    index.php/anywhere/golf
    

    然后,在代码中,您只需检查Anywhere的特定字符串,以确定它们是否只想查看活动。我假设您将使用链接或论坛重定向它们(并且它们不会自己键入uri字符串),因此您应该安全地传递预期的信息并针对其进行测试。

        2
  •  2
  •   Tom Schlick    16 年前

    尝试使用$this->uri->uri\u关联(n) 这里描述 http://codeigniter.com/user_guide/libraries/uri.html (半页)

    基本上,您将这样构造您的URL:

    mysite.com/index.php/search/location/利物浦/category/golf

    注意:参数是可选的,因此您不必一直都在其中。你也可以

    mysite.com/index.php/search/location/利物浦/ 和

    mysite.com/index.php/search/category/golf

    这样,如果要查找的元素不存在,它将返回false。

        3
  •  0
  •   Martin Reeves    16 年前

    我使用上面Tom建议的格式,然后沿着下面的行做一些事情来确定参数的值。

    $segment_array = $this->uri->segment_array();        
    $is_location_searched = array_search('location', $segment_array);
    if($is_location_searched && $this->uri->segment($is_location_searched +1))
    {
        $location = $this->uri->segment($is_sorted+1);
    }
    
        4
  •  0
  •   jspash    16 年前

    看一看 http://lucenebook.com/#/p:solr/s:wiki 然后在左侧导航栏上单击一点。当你这样做的时候,要密切注意URL中发生的事情。我很喜欢这个计划有很多原因。

    1. 它对搜索引擎优化很友好。
    2. “好奇”的人可以混合/匹配URL,但它仍然可以进行适当的搜索。
    3. 看起来不错!

    当然,诀窍实际上是在代码中,在如何构建代码中。我花了几个星期才把它整理好,但我终于有了自己的版本。只是不基于Ajax,因为我比Ajax更喜欢搜索引擎。阿贾克斯不付账单。

    推荐文章