|
我们知道CodeIgniter的URL一般是这样的:
PHP复制代码 [color=#02166]example.com/class/function/ID 复制代码
当我们启用查询字符串后,URL是这样的:
PHP复制代码 [color=#02166]index.php?c=products&m=view&id=345 复制代码
是否启用查询字符串,在config.php中设置:
PHP复制代码 [color=#02166]$config['enable_query_strings'] = FALSE; 复制代码
我的问题是,如果我需要我的程序可以在两种模式下切换。
那么在试图中所有使用到URL的地方,是不是都需要自己手动构建URL,像下面这样:
PHP复制代码
if($this->config->item('enable_query_strings') == "TRUE")
{
$view_url = $this->config->item('base_url') . "index.php?c=view&id=" . $value['ID'];
}
else
{
$view_url = site_url('view/' . $value['ID']);
}
复制代码
有其他更好的解决办法么?
我尝试着扩展URL辅助函数,希望能写出一个函数自动处理这种情况:
PHP复制代码
if ( ! function_exists('xixi_url'))
{
function xixi_url ($uri = '')
{
$CI =& get_instance ();
if($CI->config->item('enable_query_strings') == "TRUE")
{
return $CI->config->item('base_url') . "index.php?c=" . $uri;
}
else
{
return $CI->config->site_url($uri);
}
}
}
复制代码
很明显没能解决这个问题。求大神指点。
另外,在启用了查询字符串后,我们在控制器中只能使用get方式接收参数
我写了这么一个函数来处理:
PHP复制代码
if ( ! function_exists('xixi_argv'))
{
function xixi_argv ($argv = '', $argc = '')
{
$CI =& get_instance ();
if($CI->config->item('enable_query_strings') == "TRUE")
{
return $CI->input->get($argc);
}
else
{
return $argv;
}
}
}
复制代码
在控制器的函数中这样调用:
PHP复制代码
public function search($search = "")
{
$search = xixi_argv($search,'search');
}
复制代码
这样就可以在两种模式下都接收到正确的参数的值了。
|
|