如何将CodeIgniter HMVC中的模型加载到自动加载中


How to load a model in CodeIgniter HMVC into an autoload?

大家好,这里只需要一点帮助。我正试图用HMVC方法在CodeIgniter中研究和创建CRUD,但我在加载模型时遇到了困难。这是我的结构:

CRUD

   - application
     - config
        - autoload.php
     - modules_code
        - address
          - controllers
          - models
          - views
        - locations
          - controllers
            - locations.php
          - models
            - locations_model.php
          - views
        - member
          - controllers
            - member.php
          - models
          - views
   - css
   - js
   - third_party

我的问题是我无法在config文件夹下的autoload.php中自动加载模型这是自动加载代码:

$autoload['model'] = array('locations_model');

Inside my locations_model.php:

<?php
    class locations_model extends CI_Model{
        public function __construct(){
            parent::__construct();
        }
        public function getAllCountries(){
            $sql = "SELECT code,country FROM cscart_country_descriptions";
            $result = $this->db->query($sql);
            return json_encode($result->result_array());
        }
    }
?>

在我的控制器中,我有这个:

<?php
    class Member extends MX_Controller{
        public function __construct(){
            parent::__construct();
        }
        public function index(){
            $data['title'] = "Welcome to HHAlliance Member Point!";
            $data['project_title'] = "HH-Alliance - Login Page";
            $this->load->view('common/header',$data);
            $this->load->view('index',$data);
            $this->load->view('common/footer',$data);
        }
        public function authUser(){


        }
        public function register(){
            $data['title'] = "HHAlliance - User Account Registration";
            $data['project_title'] = "HH-Alliance Member Registration";
            $data['countries'] = $this->locations_model->getAllCountries();
            $this->load->view('common/header',$data);
            $this->load->view('user_register');
            $this->load->view('common/footer',$data);
        }

    }
?>

这是我的错误:

An Error Was Encountered
Unable to locate the model you have specified: locations_model

首先将模型类名更改为

class Locations_model extends CI_Model{
   ....
}

类名的第一个字母必须大写,其余字母必须小写。

然后,

$autoload['models'] = array('locations_model');

尝试将模型类的名称从locations_model更改为locations_model。并使用$this->load->model("模块名称");仅在需要该模型的控制器或方法中。

首先将模型类的名称locations_model更改为locations_model。并对控制器中的加载模型采用协整数方法。

$this->load->model('model_name','model_alias_name');

<?php
    class Member extends MX_Controller{
        public function __construct(){
            parent::__construct();
            $this->load->model('locations_model','locations');
        }
        public function index(){
            $data['title'] = "Welcome to HHAlliance Member Point!";
            $data['project_title'] = "HH-Alliance - Login Page";
            $this->load->view('common/header',$data);
            $this->load->view('index',$data);
            $this->load->view('common/footer',$data);
        }
        public function authUser(){


        }
        public function register(){
            $data['title'] = "HHAlliance - User Account Registration";
            $data['project_title'] = "HH-Alliance Member Registration";
            $data['countries'] = $this->locations->getAllCountries();
            $this->load->view('common/header',$data);
            $this->load->view('user_register');
            $this->load->view('common/footer',$data);
        }

    }
?>