2012-12-24 28 views
2

在我的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,其爲我設置爲默認值。

回答

3

這裏的_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