如何在CodeIgniter URL中的参数后引用函数?

时间:2013-04-11 00:10:07

标签: php codeigniter codeigniter-routing

我想要的网页应用程序部分的URL结构如下:
/user/FooBar42/edit/privacy,我希望这可以路由到控制器:user,function:edit,FooBar42privacy作为参数(按此顺序)。 我应该如何使用CodeIgniter完成此操作?

2 个答案:

答案 0 :(得分:3)

application/config/routes.php中定义此route应该有效:

$route['user/(:any)/edit/(:any)'] = "user/edit/$1/$2";

但请注意,上述路线中的(:any)会匹配多个细分受众群。例如,user/one/two/edit/three会调用edit控制器中的user函数,但只传递one作为第一个参数,two作为第二个参数。

使用正则表达式(:any)替换([a-zA-Z0-9]+),只允许一个字母数字值,长度至少为1 。这减轻了上述问题,允许/允许允许多个段。现在,如果使用user/one/two/edit/three,则会显示404页面。

$route['user/([a-zA-Z0-9]+)/edit/([a-zA-Z0-9]+)'] = "user/edit/$1/$2";

答案 1 :(得分:1)

您还可以使用CI控制器的重新映射选项

http://ellislab.com/codeigniter/user-guide/general/controllers.html#remapping

做这样的事情:

public function _remap($method, $params = array())
{
    // check if the method exists
    if (method_exists($this, $method))
    {
        // run the method
         return call_user_func_array(array($this, $method), $params);
    }
    else
    {
     // method does not exists so you can call nay other method you want
     $this->edit($params);
    }
}