【问题标题】:remap codeigniter index method with optional arguments使用可选参数重新映射 codeigniter 索引方法
【发布时间】:2012-12-10 23:08:37
【问题描述】:

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

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,这是我设置为默认值的值。

【问题讨论】:

    标签: codeigniter remap codeigniter-routing


    【解决方案1】:

    这是_remap()函数的原始签名:

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

    查看$params 数组而不是使用URI 库,您就可以开始了。

    【讨论】:

    • 不,它不起作用,因为方法包含可选参数的名称和空的 $params。另外,如果我设置 $params[] = $method 它不起作用。
    • 您能否提供一些您想要实现的路由行为的示例?例如controller/test_method/123 ==> controller->index('test_method', 123)
    • 是的。我可以做 2 个例子:一个没有参数:domain.com/ci_folder/projects ==> projects->index(no args),另一个有一个 arg 是 domain.com/ci_folder/projects/project-name ==>项目->索引(项目名称)
    • 已解决。我没有将 arg 变量用作数组,而是用作简单的字符串 var。
    • 是的,它也可以解决我的问题,doc remap。我认为将答案标记为正确答案是件好事。这次它仍然开放:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-20
    • 2018-11-22
    • 1970-01-01
    • 2021-09-19
    • 1970-01-01
    相关资源
    最近更新 更多