在控制器的索引函数中传递参数

时间:2013-09-11 10:28:23

标签: php codeigniter

我有一个控制器名称'abc'

现在,我在其中定义一个索引函数。

现在,当我转到www.example.com/abc/www.example.com/abc/index时,我可以看到我的页面出现。

现在当我在索引函数中传递参数时,我必须将其称为:

 www.example.com/abc/index/argument

那么,我怎样才能将我的论点称为

 www.example.com/abc/argument

没有将此“论点”视为公共职能?

5 个答案:

答案 0 :(得分:7)

您可以在routes.php文件中为其添加路由,例如:

$route['abc/(:any)'] = 'abc/index/$1';

这样做会将您的网址www.example.com/abc/argument发送到www.example.com/abc/index/argument

答案 1 :(得分:4)

您在寻找remapping吗?

public function _remap($method, $params = array())
{
    if (method_exists($this, $method))
    {
       return call_user_func_array(array($this, $method), $params);
    } 
    else 
    {
       return $this->index($method);
    }
    show_404();
}

答案 2 :(得分:1)

使用它的唯一方法是拥有一个新的控制器。

在您的情况下,名称应为argument,可以使其按照您的意愿运作。

答案 3 :(得分:1)

除非你想覆盖CI_Exceptions / function show_404,这将提供不稳定的解决方案,你可以尝试在你的类abc中使用另一个函数d:

    function d (){
        $argument= $this -> uri -> segment(3);
        if ($argument) {
            //do something
        }
    }

然后你用它调用它:www.example.com/abc/d/argument

答案 4 :(得分:0)

您可以在控制器类中创建一个init函数,然后通过function_exist()跟随http://php.net/manual/en/function.function-exists.php检查是否有任何名为您的第一个参数的函数,然后通过$ this-> index()调用您的索引函数并通过$ this-> index($ arg1)将参数传递给索引函数。