重映射带可选参数的codeigniter索引方法

问题描述:

在我的codeigniter控制器中,我只有带可选参数的索引函数。如果参数存在,我加载一个视图,否则我加载另一个。我用这个功能_remap:重映射带可选参数的codeigniter索引方法

function _remap($method){ 
    $param_offset = 2; 

    // Default to index 
    if (! method_exists($this, $method)) 
    { 
     // We need one more param 
     $param_offset = 1; 
     $method = 'index'; 
    } 

    // Since all we get is $method, load up everything else in the URI 
    $params = array_slice($this->uri->rsegment_array(), $param_offset); 

    // Call the determined method with all params 
    call_user_func_array(array($this, $method), $params); 
} 

的问题是,当我在索引功能检查参数它总是值等于0,其为我设置为默认值。

这里的_remap()功能的原始签名:

function _remap($method, $params = array()); 

查找范围$params阵列,而不是使用URI库,你是好去。

+0

不,它不起作用,因为方法包含可选参数和$ params的名称为空。另外如果我设置$ params [] = $方法它不起作用。 – pindol

+0

您能否提供您想要实现的路由行为的几个示例?例如'controller/test_method/123 ==> controller-> index('test_method',123)' – sepehr

+0

是的。我可以做2个例子:一个没有参数:domain.com/ci_folder/projects ==> projects-> index(没有参数),另一个有一个arg是domain.com/ci_folder/projects/project-name ==>项目 - >索引(项目名称) – pindol