Codeigniter构造函数 - 加载数据库+设置变量

时间:2011-11-22 15:49:11

标签: php model-view-controller codeigniter constructor controller

我想知道如何将以下代码添加到我的codeigniter构造函数中:

$this->load->model('members_model');
            $member = $this->session->userdata('email_address');
            $viewdata['pagecontent'] = $this->members_model->get_profile($member);

代码在我的控制器中使用,每次都重复它似乎很愚蠢。当我尝试将它添加到构造函数时,我无法引用设置变量。

到目前为止,这是构造函数:

public function __construct(){
        parent::__construct();  
        Accesscontrol_helper::is_logged_in_super_user();    

        $this->load->model('members_model');
        $member = $this->session->userdata('email_address');
        $viewdata['pagecontent'] = $this->members_model->get_profile($member);
    }

为什么以上代码不起作用?构造函数需要不同的代码吗?

2 个答案:

答案 0 :(得分:1)

在这个意义上,构造函数与所有其他方法(以及类似函数)一样工作,因此您的变量受变量范围的限制。

执行:

class Mycontroller extends CI_Controller {

public $viewdata = array();

    function __construct()
    {
      parent::__construct();
      Accesscontrol_helper::is_logged_in_super_user();
      $this->load->model('members_model');
      // $this->load->library('session');
      // $this->load->database();
      // ^- if not already autoloaded
      $member = $this->session->userdata('email_address');
      $this->viewdata['pagecontent'] = $this->members_model->get_profile($member);
    }
}

然后,在你的其他控制器的方法中,你只需要调用类属性$ this-> viewdata,ex。

function index()
{
  $this->load->view('myview',$this->viewdata);
}

并在myview.php中访问它:

echo $pagecontent;

答案 1 :(得分:1)

看起来你有一些范围问题。由于变量是在__construct()方法内声明的,因此这是唯一能够引用它们的方法。您需要将它们设为类变量才能在所有方法中访问它们。

尝试这样的事情:

class Your_class extends CI_Controller {

    protected $member;
    protected $viewdata;

    public function __construct()
    {
        parent::__construct();

        Accesscontrol_helper::is_logged_in_super_user();    

        $this->load->model('members_model');

        $this->member = $this->session->userdata('email_address');
        $this->viewdata['pagecontent'] = $this->members_model->get_profile($member);
    }
}

然后,您可以在其他方法中引用$member$viewdata,如下所示:$this->member

您可能希望以不同的方式设置它,但希望您能够了解变量和范围。