如上所述,URI 的第二片段决定会调用控制器中的哪个方法。CodeIgniter 允许你使用 _remap() 方法来废除这种规则:public function _remap()
{
// Some code here...
}注意:如果你的控制器中包含一个名为 _remap() 的方法,那么不管你的 URI 中包含什么,它总会被忽略掉。
这个方法会废除掉由 URI 片段来决定哪个方法被调用的规则,允许你重新定义调用方法的规则(方法的路由规则)。
被重新定义的方法调用方式(一般是 URI 中的第二片段)将作为一个参数传递给 _remap() :
public function _remap($method)
{
if ($method == 'some_method')
{
$this->$method();
}
else
{
$this->comments();
}
}任何附加在该方法名称之后的段都会被视为 _remap() 的第二个参数(可选)。这个可选的数组参数可以与PHP的call_user_func_array联用,模拟CodeIgniter的默认行为。public function _remap($method, $params = array())
{
$method = 'process_'.$method;
if (method_exists($this, $method))
{
return call_user_func_array(array($this, $method), $params);
}
show_404();
}