我希望能够以这种方式用户查询字符串。 Domain.com/controller/function?param=5&otherparam=10
在我的配置文件中,我有
$config['base_url'] = 'http://localhost:8888/test-sites/domain.com/public_html';
$config['index_page'] = '';
$config['uri_protocol'] = 'PATH_INFO';
$config['enable_query_strings'] = TRUE;
我得到的问题是form_open
会自动在我的网址上添加问号(?)。
所以,如果我说:
echo form_open('account/login');
它吐出:http://localhost:8888/test-sites/domain.com/public_html/?account/login
请注意它在“帐户”之前添加的问号。
我该如何解决这个问题?
非常感谢任何帮助!
答案 0 :(得分:2)
问题的根源在CI_Config类所在的Core Config.php文件中。当您尝试使用form_open函数时,表单助手使用方法site_url()。 解决方案是使用您自己的类覆盖此类。如果您使用CI< 2.0然后在application / libraries / MY_Config.php中创建扩展类,否则如果CI> = 2.0,则扩展类转到application / core / MY_Config.php。 然后,您需要重新定义方法site_url()。
class MY_Config extends CI_Config { function __construct() { parent::CI_Config(); } public function site_url($uri='') { //Copy the method from the parent class here: if ($uri == '') { if ($this->item('base_url') == '') { return $this->item('index_page'); } else { return $this->slash_item('base_url').$this->item('index_page'); } } if ($this->item('enable_query_strings') == FALSE) { //This is when query strings are disabled } else { if (is_array($uri)) { $i = 0; $str = ''; foreach ($uri as $key => $val) { $prefix = ($i == 0) ? '' : '&'; $str .= $prefix.$key.'='.$val; $i++; } $uri = $str; } if ($this->item('base_url') == '') { //You need to remove the "?" from here if your $config['base_url']=='' //return $this->item('index_page').'?'.$uri; return $this->item('index_page').$uri; } else { //Or remove it here if your $config['base_url'] != '' //return $this->slash_item('base_url').$this->item('index_page').'?'.$uri; return $this->slash_item('base_url').$this->item('index_page).$uri; } } } }
我希望这会有所帮助,我认为您使用的是未正式发布的CI 2.0,这已在官方CI 2.0版本中删除
答案 1 :(得分:2)
更简单的可能是在 config.php
中设置关注$config['enable_query_strings'] = FALSE;
我的情况是解决方案。
答案 2 :(得分:1)
如果要在网址结构中使用查询字符串,则应按以下顺序手动键入网址结构:
<domain.com>?c={controller}&m={function}¶m1={val}¶m2={val}
在相应控制器的操作中,您应该将参数设为$_GET['param1']
现在你的代码应该是这样的
form_open(c=account&m=login¶m1=val)
如果它对您不起作用,请告诉我。