我在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
)
如何解决这个问题,以便可以将值放入每个正确的变量中。
答案 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