Php 不使用$\u获取参数
在使用CodeIgniter时,默认情况下$\u GET被禁用。我想知道为什么会这样 很多时候,我想构建很长的搜索查询。例如,我有一个表单,允许您通过N个不同的字段搜索数据库。在code igniter中,显示我的搜索结果的url为: 因此,一个示例url是 我并不特别喜欢这个,因为: 1) 如果我想在以后添加更多搜索参数,这样我们就可以: 我不喜欢我在页面末尾添加“仅限男孩”和“库存”的方式,也不喜欢url的部分。感觉不对 2) 如果一个人不使用“玩具”部分和“教育”部分怎么办?然后url看起来有点笨拙Php 不使用$\u获取参数,php,codeigniter,get,Php,Codeigniter,Get,在使用CodeIgniter时,默认情况下$\u GET被禁用。我想知道为什么会这样 很多时候,我想构建很长的搜索查询。例如,我有一个表单,允许您通过N个不同的字段搜索数据库。在code igniter中,显示我的搜索结果的url为: 因此,一个示例url是 我并不特别喜欢这个,因为: 1) 如果我想在以后添加更多搜索参数,这样我们就可以: 我不喜欢我在页面末尾添加“仅限男孩”和“库存”的方式,也不喜欢url的部分。感觉不对 2) 如果一个人不使用“玩具”部分和“教育”部分怎么办?然后ur
使用$\u GET参数进行搜索是否更有意义,因为这样一来,放置查询字符串参数的顺序(&field=value)就无关紧要了?省略查询字符串参数会自动表示“未选择”。首先,如果需要,您可以始终启用$\u GET变量 此外,您还可以使用参数,如
。/shopping/type:toys/cat:education/age:6-8/sort:price\u asc
,然后在控制器代码中解析它们:
function shopping() {
$args = func_get_args();
foreach ($args AS $arg) {
list($filter_name, $filter_value) = explode(':', $arg, 2);
if ($filter_name == 'cat') {
// set category filter to $filter_value (education)
} elseif ($filter_name == 'type') {
// set type filter to toys
}
// etc etc
}
}
首先,如果愿意,您可以始终启用$\u GET变量 此外,您还可以使用参数,如
。/shopping/type:toys/cat:education/age:6-8/sort:price\u asc
,然后在控制器代码中解析它们:
function shopping() {
$args = func_get_args();
foreach ($args AS $arg) {
list($filter_name, $filter_value) = explode(':', $arg, 2);
if ($filter_name == 'cat') {
// set category filter to $filter_value (education)
} elseif ($filter_name == 'type') {
// set type filter to toys
}
// etc etc
}
}
他们这样做的原因是它会干扰控制器、函数和参数的调用 CI使用URI字符串告诉“程序”要做什么。您可以启用一种模式来实现此目的:
www.example.com/controller/method/parameter
为此:
www.example.com/?c=controller&m=methods&p=parameter1&yourgetitem=yourgetvalue
虽然没有那么漂亮,但你肯定可以用CI做任何你喜欢的事情;这只需要一些调整。他们这样做的原因是它会干扰控制器、函数和参数的调用 CI使用URI字符串告诉“程序”要做什么。您可以启用一种模式来实现此目的:
www.example.com/controller/method/parameter
为此:
www.example.com/?c=controller&m=methods&p=parameter1&yourgetitem=yourgetvalue
虽然没有那么漂亮,但你肯定可以用CI做任何你喜欢的事情;这只需要一些调整。您也可以对搜索参数使用不同的分隔符,如
+
(许多系统都这样做)。它们被传递到单个控制器路由,在那里您可以根据需要explode()
。示例:http://http://mysite.com/shopping/toys+教育+年龄8+等
您也可以对搜索参数使用不同的分隔符,如+
(与许多系统一样)。它们被传递到单个控制器路由,在那里您可以根据需要explode()
。示例:http://http://mysite.com/shopping/toys+教育+年龄8+等
在CodeIgniter中既可以使用查询字符串,也可以使用段,方法如下:
在config.php集合中:
- $config['uri_protocol']=“路径信息”李>
- $config['enable_query_strings']=TRUE李>
在.htaccess中,使用/after index.php而不是?在您的CI规则:RewriteRule^(.*)$index.php/$1[L]中,可以在CodeIgniter中同时使用查询字符串和段,方法如下: 在config.php集合中:
- $config['uri_protocol']=“路径信息”李>
- $config['enable_query_strings']=TRUE李>