【问题标题】:CI_Model not found in extending class在扩展类中找不到 CI_Model
【发布时间】:2015-06-12 18:51:45
【问题描述】:

我无法使用 require_once 在控制器上手动实例化我的模型,问题如下:

控制器

<?php
require_once './application/models/portion/portioncreatormodel.php';
class Payment extends CI_Controller {
  function sample() {
    $pc = new PortionCreatorModel();
    echo 'OK';
  }
}

型号

<?php

class PortionCreatorModel extends CI_Model {
  function __construct() {
    parent::construct();
  }
}

当我使用$this-&gt;load-&gt;model('portion/portionCreatorModel') 加载此模型时,它可以完美运行(在控制器或其他模型中),当我使用同样的require_once './application/models/portion/portioncreatormodel'; 使用require_once 加载它时,它可以在其他模型中完美运行。 为什么它不能在控制器上正常工作?我在我的error.log 中找到了这个: PHP Fatal error: Class 'CI_Model' not found in /var/www/html/myerp/igniter/application/models/portion/portioncreatormodel.php on line 3

注意:我已经尝试过这个 require_once:

require_once APPPATH.'/models/portion/portioncreatormodel.php';

请不要告诉我解决它的唯一方法是将 PortionCreatorModel 重命名为 Portioncreator_Model,它已经在模型上正常工作,问题出在控制器上。

有胶水吗?

【问题讨论】:

  • CI_Model 未找到,因为您在流程链中评估 CI_Model 类之前包含该文件。您永远不应该对文件执行一次要求,而应该遵循 MVC 模式。
  • 感谢您的快速回复。顺便说一句,在这种情况下,我怎样才能拥有单个模型的多个实例?你的意思是我应该把它抽象成一个更高级的模型吗?我在折叠中使用它,虽然我可以“清理”单个实例然后再次使用它,但我更愿意只实例化一个新实例
  • 为什么要以这种方式加载模型以及为什么需要多个模型实例一次就足够了?

标签: php codeigniter


【解决方案1】:

尝试在您的控制器中使用它:

<?php
class Payment extends CI_Controller {
  function sample() {
    $this->load->model('PortionCreatorModel', 'pc');
    // Reference by using $this->pc
    echo 'OK';
  }
}

参考:CodeIgniter: Models

【讨论】:

    猜你喜欢
    • 2014-02-21
    • 2014-03-24
    • 1970-01-01
    • 2019-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多