我无法加载任何控制器,但在CodeIgniter HMVC中加载具有模块名称的控制器

时间:2017-04-07 14:47:09

标签: php codeigniter codeigniter-3 hmvc

所以,我正在使用HMVC在Codeigniter 3中开发一个网站,我在我的应用程序文件夹中有以下文件夹结构:

core
    MY_Controller.php
modules
    login
        controllers
            Keep_Logged.php
            Login.php

所以,这是MY_Controller(我将它用作所有控制器的父级):

<?php (defined('BASEPATH')) OR exit('No direct script access allowed');

class MY_Controller extends MX_Controller   {

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

        $this->load->module("template");        
        $this->load->module("login/Keep_Logged");

        $this->Keep_Logged->cookie_authenticate();

        $exceptions = array("login", "login/authenticate");

        if ($this->session->user_id == NULL && !in_array(uri_string(), $exceptions))    {
            redirect("/login", "refresh");
        }
    }

}

这就是Keep_Logged.php

<?php 

class Keep_Logged extends MY_Controller 
{
    function __construct()  {
        parent::__construct();

        $this->load->model("login/Login_Model");
        $this->load->helper("cookie");
    }

    function cookie_authenticate()  {
        if ($user = $this->Login_Model->check_login(get_cookie("user_email"), get_cookie("user_password"), TRUE))   {
            $this->session->set_userdata(array(
                "user_id" => $user->user_id,
                "user_email" => $user->email,
                "user_name" => $user->name,
                "user_kind" => $user->kind
            ));
        }
    }
}

我的问题是我无法加载Keep_Logged.php控制器,虽然我可以正常加载Login.php(或者任何其他控制器与其模块同名)。我怎样才能解决这个问题 ?我每次都会收到这个错误。

  

遇到PHP错误

     

严重性:注意

     

消息:未定义的属性:CI :: $ Keep_Logged

     

文件名:MX / Controller.php

     

行号:59

-

  

遇到未捕获的异常

     

输入:错误

     

消息:在null

上调用成员函数cookie_authenticate()      

文件名:D:\ xampp \ htdocs \ CIHMVC \ application \ core \ MY_Controller.php

     

行号:13

1 个答案:

答案 0 :(得分:0)

您尝试在父类中调用子类的方法。将cookie_authenticate()方法移至MY_Controller并以$this->cookie_authenticate()方式调用。不要忘记将工作人员从Keep_Logged构造函数移动到MY_Controller构造函数。