3

I have a controller name 'abc'

Now, I define a index function in it.

Now as i go to www.example.com/abc/ or www.example.com/abc/index i can see my page appearing.

Now when i pass argument in that index function i would have to call it as:

 www.example.com/abc/index/argument

So, How can i call my argument as

 www.example.com/abc/argument

without treating this 'argument' as public function ?

4

5 回答 5

7

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

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

这样做会将您的网址路由www.example.com/abc/argumentwww.example.com/abc/index/argument

于 2013-09-11T10:38:49.107 回答
4

您在寻找重新映射吗?

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();
}
于 2013-11-01T21:46:14.110 回答
1

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

在您的情况下,它应该是名称,因为argument它可以使其按您的意愿工作。

于 2013-11-01T05:54:25.327 回答
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

于 2013-11-07T15:59:30.073 回答
0

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

于 2013-11-08T04:16:42.263 回答