在Codeigniter控制器的构造函数中加载的模型不能被相同控制器的其他功能使用

时间:2011-12-06 00:06:47

标签: function codeigniter model controller

我的模特:如下所示,非常基本

class User extends CI_Model
{
    function __construct()
    {
        parent::__construct();
    }

    function getAll()
    {
        $this->db->order_by("lastName", "asc");
        $this->db->order_by("firstName", "asc");
        $this->db->order_by("userName", "asc");
        $query = $this->db->get('user');

        // test for result
        if($query->num_rows() > 0)
        {
            return $query->result();
        }

        return NULL;
    }
}

我的控制器:实际上是我的控制器的一部分,每次按默认路由加载用户/显示功能时,错误(进一步向下)都会显示出来。控制器的构造函数中加载的模型是否可用于同一控制器中的所有其他函数?

class Users extends CI_Controller
{
    function __contruct()
    {
        parent::__construct();
        $this->load->model('user');
    }

    function display()
    {
        $data['users'] = $this->user->getAll();

        $head['pageTitle'] = 'Users Panel';

        $this->load->view('security/redirect');
        $this->load->view('template/head', $head);
        $this->load->view('user/usersPanel', $data);
        $this->load->view('template/foot');
    }
}

我的错误:引用该行,“$ data ['users'] = $ this-> user-> getAll()”,在上面的控制器中

A PHP Error was encountered
Severity: Notice
Message: Undefined property: Users::$user

我的环境:

Codeigniter 2.1.0;
Mac Lion;
MAMP 2.0;

2 个答案:

答案 0 :(得分:9)

不应该这样:

class Users extends CI_Controller
{
    function __contruct()
    {

是这样的:

class Users extends CI_Controller
{
    function __construct()
    {

用constru替换contruct。

答案 1 :(得分:1)

不应该这样:

$data['users'] = $this->user->getAll();

是这样的:

$data['users'] = $this->user_model->getAll();

<强>抱歉 还有型号名称:

$这 - &GT;负载&GT;模型( 'user_model');

和类名User_model扩展CI_Model

我的所有CI项目都以这种方式设置。

http://codeigniter.com/user_guide/general/models.html