我正在尝试从模型中访问全局变量。全局变量由控制器设置:
function sets(){
$value = $this->input->post('current_id');
$anywhere = array('current_id'=>$value);
$this->load->vars($anywhere);
}
但该模型不知道当前id:的值
$session_id = $this->load->get_var('current_id');
不幸的是,CodeIgniter模型无法访问您要查找的值。但是还有希望!有几种方法可以访问从请求中加载的参数,选择你的毒药,但在我看来,为你的模型定义一个定义的合同接口可以让编写代码变得更容易,而且以后维护起来也不那么麻烦。
CodeIgniter对象的引用可以这样获取:
$ci =& get_instance();
$session_id = $ci->load->get_var('current_id');
当然,这将是获取数据的糟糕方式。更好的方法是将其作为参数传递给模型本身。这样做不会花太多钱,它会给你一个方法上的合同签名,你可以指向并说"嘿,这个应该是模型的current_id:
function sets($session_id)
{
...
}
当然,您只需要传入您希望$current_id作为该函数调用中的参数的值。这为您提供了灵活性,使您不必依赖于从POST HTTP请求填充模型的事实。
CI_Model类没有Loader,因此$this->load在模型中不存在。
$this->load->get_var()供控制器使用。来自Loader文档-
如果由于任何原因在库或其他控制器方法中使用$This->load->vars()设置了var,这将非常有用。
试试这个,
$ci =& get_instance();
$ci->load->get_var('current_id');
但我认为,这不是个好主意。
您可以对模型使用input->post()方法,也可以用模型函数参数设置变量。