我正在编写一个应用程序,允许您根据位置和类别过滤数据库结果。
如果有人要在Golf类别下搜索利物浦,则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
的特征,这正是我想要避免的。
答案 0 :(得分:2)
尝试使用$ this-> uri-> uri_to_assoc(n) 这里描述http://codeigniter.com/user_guide/libraries/uri.html(页面的一半)
基本上你会像这样构建你的网址:
mysite.com/index.php/search/location/liverpool/category/golf
注意:参数是可选的,所以你不必一直都在那里。你也可以这样做
mysite.com/index.php/search/location/liverpool/ 和
mysite.com/index.php/search/category/golf
这样,如果您要查找的元素不存在,它将返回FALSE
答案 1 :(得分:0)
无论他们搜索什么,最好保持URI段的相关性。
index.php/LOCATION/CATEGORY
如果他们对某个位置不感兴趣,请将填充符传递给系统:
index.php/anywhere/golf
然后在您的代码中,您只需检查ANYWHERE的特定字符串,以确定他们是否只想查看活动。我假设您将使用链接或论坛重定向它们(并且它们不会自己键入URI字符串),因此您应该安全地传递您期望的信息并对其进行测试。
答案 2 :(得分:0)
我使用上面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);
}
答案 3 :(得分:0)
查看http://lucenebook.com/#/p:solr/s:wiki并点击左侧导航栏中的一点。当你这么做时,要密切注意网址中发生的事情。我非常喜欢这个计划有很多原因。
当然,诀窍在于代码,你如何构建东西。我花了几周的时间来解决它,但我终于拥有了自己的网站版本。只是不是基于ajax,因为我比ajax更喜欢搜索引擎。阿贾克斯不支付账单。