Codeigniter HMVC模块化错误

时间:2012-10-11 10:26:56

标签: codeigniter hmvc

我是CI + MX的新手,我尝试过Modules :: run();风格,但我似乎无法让它发挥作用。

这是我的目录结构:

/application
-/modules
--/main
---/controllers
----main.php
---/models
---/views
--/connections
---/controllers
----connections.php
---/models
----/group_model.php
---/views
----connection_view.php

main.php控制器:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Main extends MX_Controller {
function __construct(){
    parent::__construct();  
    $this->load->helper('url');

}
function index(){
    echo modules::run('connections/load_connections');      
}
}
?>

connections.php控制器:

<?php
class Connections extends CI_Controller{

function __construct(){
    parent::__construct();  
    $this->load->helper('url');

    $this->load->model('connections/group_model');
}

function load_connections(){
    $user_id = 2;           
    $data['tabs'] = $this->group_model->get_groups($user_id);                                       
    $this->load->view('connection_view', $data);        

}
}
?>

group_model.php模型:

class Group_model extends CI_Model{

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

/**
 * Get all groups in db
 **/    
function get_groups($user_id){
    $this->db->select('g.group_name');
    $this->db->from('groups AS g');
    $this->db->join('members AS m', 'g.group_id = m.group_id');
    $this->db->where('m.user_id', $user_id);
    return $this->db->get()->result_array();
}
}

我的connection_view.php视图包含一个div和一些php代码,用于显示在load_connections函数中作为数组传递的$ data ['tabs']。

问题是,我收到的错误是:

A PHP Error was encountered

Severity: Notice

Message: Undefined property: Connections::$group_model

Filename: controllers/connections.php

Line Number: 14

Fatal error: Call to a member function get_groups() on a non-object in    C:\xampp\htdocs\hmvc\application\modules\connections\controllers\connections.php on line 14

我已经明确遵循了MX维基上https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc/wiki/Home提供的所有说明 并根据需要设置一切。 我已经配置了/ application / config下的database.php。 routes.php还配置为将默认控制器指向main.php

我想知道我错过了什么或做错了我无法让它发挥作用。

Codeigniter version: 2.1.3
MX version: 5.4

1 个答案:

答案 0 :(得分:1)

几乎错过了它,因为你正在调用modules :: run(),所以扩展了与MX_Controller的连接。每当你想用module :: run()调用一个控制器时,你用MX_Controller而不是CI_Controller扩展它


您的第二个错误是由于您的第一个错误引起的。

您的第一个错误很可能是因为它无法打开group_model。

试试这个

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