0

我正在为 Codeigniter 中的代理机构开发 CRM,但我有一个问题,我似乎无法找到可靠的答案。如果我对控制器中的大多数方法执行一项任务,有没有办法只定义一次该操作?例如...

每个视图调用都会传递 $data 变量,就像这样......

$this->load->view('templates/template.php', $data);

因此,如果我正在执行诸如在控制器的每个功能中获取管理员信息之类的操作,我怎么能告诉它一次执行该操作并将其传递给我的所有功能。

像这样...

$data['admin'] = $this->Crm_model->get_admin();

我已经尝试将 ^ 放在构造函数中,但它不起作用。有任何想法吗?

4

1 回答 1

2

如果你这样做:

$data['admin'] = $this->Crm_model->get_admin();

在构造函数中,$data的作用域仅限于构造函数。您需要将其创建为类属性,以便将其作用于整个类。改为这样做

$this->data['admin'] = $this->Crm_model->get_admin();

在构造函数中,然后在其他方法中,您可以通过执行访问数组$this->data

这是一个例子:

class Foobar extends CI_Controller {

    public function __construct() {
        $this->data['foo'] = "bar";
    }

    public function index() {
        // use the class property data here to add more info to it
        $this->data['hello'] = "world";

        // now pass this to the view
        $this->load->view('myView', $this->data);
        // myView will receive both $foo and $hello

    }
}
于 2012-12-01T04:43:26.857 回答