我正在尝试从模型中访问全局变量。全局变量由控制器设置:
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');
答案 0 :(得分:0)
CI_Model类没有Loader,因此模型中不存在$ this-> load。
$ this-> load-> get_var()供控制器使用。来自Loader documentation -
如果出于任何原因使用$ this-> load-> vars()在库或其他控制器方法中设置var,这将非常有用。
答案 1 :(得分:0)
试试这个,
$ci =& get_instance();
$ci->load->get_var('current_id');
但我认为,这不是好主意。
您可以在模型上使用input-> post()方法,或者使用模型函数参数设置变量。
答案 2 :(得分:0)
不幸的是,CodeIgniter Model无法访问您正在寻找的值。但是有希望!有几种方法可以访问从请求中加载的参数,选择你的毒药,但在我看来,为你的模型设置一个定义的合同接口编写代码更容易,更难以维持下线。
可以像这样抓取对CodeIgniter对象的引用:
$ci =& get_instance();
$session_id = $ci->load->get_var('current_id');
当然,这将是获取数据的令人讨厌的方式。更好的方法是将其作为参数传递给模型本身。这样做你不会付出太多的代价,并且它会给你一个合同签名,你可以指出并说“嘿,这个应该应该是 current_id 的模型:
function sets($session_id)
{
...
}
当然,您只需将希望 $ current_id 的值传递给该函数调用中的参数。这使您可以灵活地不必依赖于从POST HTTP请求填充模型的事实。