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


CodeIgniter - Model cannot access global variables in 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');

不幸的是,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()方法,也可以用模型函数参数设置变量。