Code Igniter,方法中的多个传递参数

时间:2013-05-14 03:41:19

标签: codeigniter function url-parameters

我在Code Igniter中有一个方法,并希望使用此URL访问" kuesioner / test / school_id / 6 / parent_id / 7" 我使用_remap函数来动态定义URL中的params。来自this的代码。 这是我的代码:

public function test($school_id, $parent_id)
{
    echo "<pre>";
    print_r($schoold_id);
    print_r($parent_id);
    echo "</pre>";
}

public function _remap($method, $params)
{
    $map = array();
    for( $i = 1; $i < count( $params ); $i = $i + 2 )
    {
        $map[$params[$i-1]] = $params[$i];
    }

    if( $method[0] != '_' && method_exists( $this, $method ))
        return $this->$method($map);
}

我的控制器上出现错误,说Kinsioner :: test()缺少参数2(缺少$ parent_id),它将map的数组返回到测试控制器中的单个变量$ school_id。

print_r($ school_id)正好显示

  Array
  (
    [school_id] => 6
    [parent_id] => 7
  )

如何解决这个问题,以便可以将值放入每个正确的变量中。

4 个答案:

答案 0 :(得分:1)

始终使用默认值(如0或其他任何值)分配参数,以防止出现不必要的警告和错误。

public function test($school_id = 0, $parent_id = 0)
{
    echo "<pre>";
    print_r($schoold_id);
    print_r($parent_id);
    echo "</pre>";
}

答案 1 :(得分:0)

public function test($params = NULL)
{
    print_r($this->uri->uri_to_assoc(3));
    // #CHECK http://ellislab.com/codeigniter/user-guide/libraries/uri.html
}

答案 2 :(得分:0)

尝试用以下代码替换最后一行:

return call_user_func_array(array($this, $method), $map);

我认为这可以解决您的问题,但如果没有,您可以将“测试”功能编辑为:

public function test($params)
{
  echo "<pre>";
  print_r($params['schoold_id']);
  print_r($params['parent_id']);
  echo "</pre>";
}

答案 3 :(得分:-1)

为什么你不尝试使用$ this-&gt; uri-&gt; uri_to_assoc(n)。 详情请见http://ellislab.com/codeigniter/user-guide/libraries/uri.html 不需要使用_remap