说我的页面已开启:
http://localhost/app1/profile/index/123/
current_url()的结果如下:
http://localhost/app1/?profile/index/123
不应该有?
。问号似乎是由以下配置设置引起的:
$config['enable_query_strings'] = TRUE;
我需要在我的应用程序中启用查询字符串。任何想法我需要做什么?
编辑1:
此外,在URL确实有查询字符串的情况下,我还需要current_url来返回它。我希望Phil Sturgeon在这里的解决方案CodeIgniter current_url doesn't show query strings能帮到我。
我正在使用CI 2.1.0。
答案 0 :(得分:1)
如上所述,$config['enable_query_strings']
在没有支持$_GET
(真的,没有)的情况下,在后面是Codeigniter中的“遗留”设置。
http://codeigniter.com/user_guide/general/urls.html
启用查询字符串
在某些情况下,您可能更喜欢使用查询字符串网址:
index.php?c=products&m=view&id=345
c
===您的控制器名称
m
===您的方法名称
其余的是方法参数。这是一个非常误导性的描述,并且在其余的URL文档中根本没有提到其他设置或查询字符串。我从来没有听说有人真正使用过它。 CI默认带有$config['allow_get_array']= TRUE;
,这正是您想要的。
您可以修改查询字符串支持的current_url()
函数,只需创建application/helpers/MY_url_helper.php
并使用它:
function current_url($query_string = FALSE)
{
$CI =& get_instance();
$current_url = $CI->config->site_url($CI->uri->uri_string());
// BEGIN MODIFICATION
if ($query_string === TRUE)
{
// Use your preferred method of fetching the query string
$current_url .= '?'.http_build_query($_GET);
}
// END MODIFICATION
return $current_url;
}
然后将其称为current_url(TRUE)
以包含查询字符串。
答案 1 :(得分:0)
请勿使用:$config['enable_query_strings'] = TRUE;
请改用:$config['allow_get_array']= TRUE;
enable_query_strings
不是您的想法,也不是用得太多。
要构建自己的查询字符串,请使用以下两种方法之一:
$query_string = http_build_query($this->input->get());
$query_string = $this->input->server('QUERY_STRING');
以及:
$lastseg_with_query = $lastseg.'?'.$query_string;
有关详情,请参阅此SO Q& A:URI Segment with Question Mark