我正在尝试找出如何使用Codeigniter中的_remap将参数传递给控制器。
我需要将数字参数传递给控制器中的索引方法,因此我向控制器添加了以下重新映射函数:
function _remap($method, $params = array())
{
if (method_exists($this, $method))
{
return call_user_func_array(array($this,$method), $params);
}
else
{
$this->index($method);
}
}
所以我成功使用以下方法将参数传递给索引方法:
public function index($param = NULL)
{
$this->data['parameter'] = $param;
}
控制器中的其他方法会引起问题,例如:
public function get_record($tid = NULL)
{
if($model = $this->model->get_data($tid))
{
$data['status'] = TRUE;
$data['error'] = FALSE;
}
else
{
$data['status'] = FALSE;
$data['error'] = TRUE;
$data['toastmsg'] = 'Model not found.';
}
echo (json_encode($data));
}
因为参数为空所以不返回值...所以我尝试使用以下修改的代码,请注意数组以传递参数:
public function get_record($param = NULL)
{
$tid = $param[0]
if($model = $this->model->get_data($tid))
{
$data['status'] = TRUE;
$data['error'] = FALSE;
}
else
{
$data['status'] = FALSE;
$data['error'] = TRUE;
$data['toastmsg'] = 'Model not found.';
}
echo (json_encode($data));
}
在上面的代码有效的情况下...但是又出现另一个问题...如果参数只是一个数字..没问题(1 ...或2 ...或3 ...依此类推直到9),但没有通过大于9的数字...突出第一个数字。因此,例如...参数234的传递就像2一样。
希望我已经解释了这个问题,对不起,英语不好,非常感谢您提供的提示和帮助。