【问题标题】:codeigniter undefined property error on model模型上的codeigniter未定义属性错误
【发布时间】:2011-04-05 06:11:08
【问题描述】:

我的模型出现未定义属性错误。我正在使用火柴盒库进行模块化分离。我的 mproduct 模型是:

class MProducts extends Model{
    /* function MProducts(){
        $this->load->module_model('cities','MCities');
     }*/

    public $home_city_id ='';

    function __construct(){
        parent::Model();
        $this->home_city_id = $this->MCities->getHomeCityId();
    }
}

我得到这个错误:

A PHP Error was encountered

Severity: Notice

Message: Undefined property: MProducts::$MCities

Filename: models/mproducts.php

Line Number: 12

我的城市模型是:

class MCities extends Model{

    function MCities(){
        parent::Model();
    }
function getHomeCityId(){
        $city = get_cookie('home_city');
         $this->db->select('id');
         $this->db->where('name', $city);
         $Q = $this->db->get('omc_cities');
         if($Q->num_rows() > 0){
             foreach ($Q->result_array() as $row){
             return $row['id'];
           }
        }
    }

}

我也不知道哪条路是错的。

已编辑 我的产品控制器是这样的:

class Admin extends Shop_Admin_Controller {
    function Admin(){
        parent::Shop_Admin_Controller();
        // Check for access permission
        check('Products');
        // load modules/categories/model/mcats
         $this->load->module_model('categories','MCats');
        // load the MProducts model
        $this->load->model('MProducts');
        // load modules/cities/model/mcities
        $this->load->module_model('cities','MCities');
        // Set breadcrumb
        $this->bep_site->set_crumb($this->lang->line('backendpro_products'),'products/admin');       
    }


    function index(){
        // Setting variables
        $data['title'] = "Manage Products";
        $data['products'] = $this->MProducts->getAllProducts();
        $data['cities'] = $this->MCities->getCitiesDropDown();
        $data['categories'] = $this->MCats->getCategoriesDropDown();
        // we are pulling a header word from language file
        $data['header'] = $this->lang->line('backendpro_access_control');
        $data['page'] = $this->config->item('backendpro_template_admin') . "admin_product_home";
        $data['module'] = 'products';
        $this->load->view($this->_container,$data);
    }
}

【问题讨论】:

    标签: codeigniter


    【解决方案1】:

    在您的 MProducts 构造函数中,您执行以下操作:$this->MCities->getHomeCityId(); 这意味着您尝试获取 MProducts 对象的 MCities var,然后调用该对象的 getHomeCityId();,这将不起作用,因为在那里查看您的 MProducts不是MCities var。

    编辑: 您必须在模型中获取一个 codeigniter 实例并从 CI 实例中检索 MCities 模型。

    MProducts 应该是这样的:

    class MProducts extends Model{
        /* function MProducts(){
            $this->load->module_model('cities','MCities');
         }*/
    
        public $home_city_id ='';
    
        function __construct(){
            parent::Model();
            $CI =& get_instance();
    
            $this->home_city_id = $CI->MCities->getHomeCityId()->getHomeCityId();
        }
    }
    

    我希望这会有所帮助。

    【讨论】:

    • 您正试图访问模型内​​的 MCities,但模型与控制器分离。这就是为什么您必须在控制器中而不是在模型内部执行此操作的原因。
    • 我不知道把控制器放在哪里。请你能详细告诉我或举个例子。
    • 其实我不知道你的控制器长什么样。
    • 啊,好吧,现在我看到了问题所在。我已经改变了答案。这应该可以正常工作。
    猜你喜欢
    • 1970-01-01
    • 2011-03-27
    • 1970-01-01
    • 1970-01-01
    • 2014-11-20
    • 2014-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多