1

所以我得到了错误:未定义的属性:badge_progress::$bp_model。

我不明白发生了什么事。这是我的代码:

控制器:

<?php
// Badge Progress Module

class badge_progress extends CI_Controller 
{
    function __construct()
    {
        parent::__construct();

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

        $data['dotpoints'] = $this->bp_model->dotpoints('1');
        $this->load->view('bp_view', $data);
    }
}

?>

模型:

<?php
class bp_model extends CI_Model {

    function dotpoints($badge_id) {
        $query = $this->db->query("SELECT * FROM course_topic_dotpoints WHERE badge_id = ".$badge_id);

        if ($query->num_rows() > 0) {
            return $query->result();
        }
    }
}
?>
4

2 回答 2

2

啊修好了!没有意识到主控制器(模块目录之外的控制器)也需要扩展“MX_Controller”而不是“CI_Controller”。

于 2012-03-17T10:43:29.750 回答
0

类名必须以大写字母开头。

class Badge_progress extends...

class Bp_model extends...

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

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

更新:

您不应该在构造函数中将所需的逻辑作为函数。创建一个单独的函数来处理点的东西。

<?php
// Badge Progress Module

class Badge_progress extends CI_Controller 
{
    function __construct()
    {
        parent::__construct();
        $this->load->model('bp_model');

    }

    function dotpoints()
    {
        $data['dotpoints'] = $this->bp_model->dotpoints('1');
        $this->load->view('bp_view', $data);
    }
}

此外,您在模型中缺少构造函数。查看我之前发布的那些链接...

于 2012-03-17T01:18:25.500 回答