CodeIgniter:使用“enable_query_strings”时传递方法参数

时间:2010-08-26 01:30:21

标签: codeigniter

我通过设置config变量“enable_query_strings”= TRUE来启用查询字符串。

据我所知,为了调用Y类的方法X,我的URL将如下所示:

http://localhost/ci_sample/index.php?c=Y&m=X

但是,如果X的函数签名是

,该怎么办?
function X($param1, $param2) {...}

我的查询字符串应该如何将两个参数传递给X()?

(顺便说一句,我已经决定使用这种方法,因为我找不到mod_rewrite上的文章/论坛来删除可以在我的机器上运行的index.php。我在Windows平台上使用XAMPP)

此致

欧文

2 个答案:

答案 0 :(得分:3)

似乎如果你想使用“enable_query_strings”= TRUE,你就不能将参数传递给函数X()。

这就是user guide

中所说的内容
  

请注意:如果您使用查询字符串,则必须构建自己的URL,而不是使用URL帮助程序(以及生成URL的其他帮助程序,如某些表单帮助程序),因为它们旨在与段一起使用基于URL。

要解决这个问题,你必须这样做:

http://localhost/ci_sample/index.php?c=Y&m=X&param1=bla&param2=foo

function X()
{
   $param1 = $this->input->get('param1');
   $param2 = $this->input->get('param2');
}

答案 1 :(得分:0)

您不必仅仅因为无法从URL中删除index.php而使用查询字符串,您可以使用以下URL:example.com/index.php/controller/method/param1/param2。如果您在config.php中启用查询字符串并将uri_protocol设置为"PATH_INFO",则可以同时使用这两者。像这样:example.com/index.php/controller/method/param1/param2/?param3=wellhellothere

让mod_rewrite工作的问题可能与您在子目录中运行CI有关。在RewriteBase /ci_sample/之后直接RewriteEngine On应该做到这一点。 :)