模型上的codeigniter未定义属性错误
我的模型出现未定义属性错误。我使用火柴盒库进行模块化分离。我的MPProduct模型是:模型上的codeigniter未定义属性错误,codeigniter,Codeigniter,我的模型出现未定义属性错误。我使用火柴盒库进行模块化分离。我的MPProduct模型是: class MProducts extends Model{ /* function MProducts(){ $this->load->module_model('cities','MCities'); }*/ public $home_city_id =''; function __construct(){ parent:
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);
}
}
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();
}
}
在MPProducts的构造函数中,您可以这样做:
$this->MCities->getHomeCityId()
这意味着您尝试获取mpProducts对象的MCities变量,然后调用getHomeCityId()该对象的代码>什么将不起作用,因为查看您的MPProducts没有MCities
var
编辑:
您必须在模型中获得codeigniter实例,并从CI实例检索MCities模型
MPProducts应该是这样的:
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);
}
}
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();
}
}
我希望这有帮助。您试图访问模型内部的MCITES,但模型与控制器是分离的。这就是为什么你必须在控制器中,而不是在模型中,我不知道在控制器中放在哪里。请你详细地告诉我或者举个例子。事实上我不知道你的控制器是什么样子。啊,好的,现在我明白问题了。我改变了答案。这应该行得通。