CodeIgniter - Model无法访问CodeIgniter中的全局变量

时间:2012-03-22 03:39:26

标签: php codeigniter

我正在尝试从模型中访问全局变量。全局变量由控制器设置:

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');

3 个答案:

答案 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请求填充模型的事实。