Codeigniter:加载HMVC子模块模型时出错

时间:2014-01-06 08:34:42

标签: php codeigniter

我无法从子模块本身加载子模块控制器中的模型。

我的模块和子模块很少,如下所示

modules/admin/
modules/admin/models
modules/admin/controllers
modules/admin/views

modules/admin/models/dashboard/
modules/admin/controllers/dashboard/
modules/admin/views/dashboard/

modules/admin/models/plugs/
modules/admin/controllers/plugs/
modules/admin/views/plugs/

每个M / V / C都有自己的文件。

现在我已经在modules / admin / models / pluggs /中创建了模型,仅用于测试目的,如下所示

插件型号

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

class Plugs extends CI_Model
{
    public function __construct()
    {
        parent::__construct();    

    }


    public function mymeta()
    {
        return 'plugs model loded';
    }

}

现在尝试加载插件控制器,如下所示

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

class Plugs extends MX_Controller
{
    public function __construct()
    {
        parent::__construct();

        $this->load->model('plugs');
    }

    public function index()
    {
        $this->load->view('plugs/index');
    }

    public function get_plugin_meta()
    {
        echo $this->plugs->mymeta(); // this is the method from Plugs Models
    }   

}

但是当我尝试访问网址http://localhost/mysite/admin/plugs/get_plugin_metahttp://localhost/mysite/admin/plugs时,它会给我以下错误。

An Error Was Encountered

Unable to locate the model you have specified: plugs

那么如何在控制器中加载模型呢?

1 个答案:

答案 0 :(得分:1)

您的模块不是plugs。由于admin

,它是modules/admin

您应该使用$this->load->model('module/model');

之类的内容

试试这个:

$this->load->model('admin/plugs/plugs'); // module/folder/file

重要

控制器类名称和模型类名称存在冲突。

只需使用以下代码重命名模型文件名:plugs_model.php

并使用以下内容更改班级名称:class Plugs_model extends CI_Model

$this->load->model('admin/plugs/plugs_model'); 
echo $this->plugs_model->mymeta(); // plugs model loded