【问题标题】:Codeigniter Can't Find My_ModelCodeigniter 找不到 My_Model
【发布时间】:2013-06-15 22:20:26
【问题描述】:

非常令人沮丧 - 当我在本地开发时,一切都很完美。然后我第一次开始在我的主机(GoDaddy)上进行测试,我得到了错误 致命错误:在第 3 行的 /home/content/49/12220009/html/application/models/user_model.php 中找不到类“MY_Model”

代码很基础——

用户模型.php

class User_model extends MY_Model {

protected  $_table;

public function __construct() {
    parent::__construct();
    $this->_table = "user";
}

MY_Model.php (应用程序/核心/My_Model.php)

class MY_Model extends CI_Model
{
 public function __construct() {
    echo "in my model ctor";
    parent::__construct();
}

这一切都始于控制器按预期加载 User_model -

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

关于为什么这会在本地工作但不能在我的主机上工作,或者换句话说如何解决它有什么想法吗?

【问题讨论】:

  • 可能是区分大小写的问题;您是否有机会在 Windows 或 Mac 上进行开发?检查 my_model 文件名的大小写;是 MY_Model.php 还是 My_Model.php
  • 你能把这个添加到你的 MY_Model 中吗,if(!class_exists('CI_Model')) { class CI_Model extends Model { } } // CI 2.0 兼容性

标签: php codeigniter


【解决方案1】:

这绝对是一个区分大小写的问题;你应该做的是遵循这两个步骤

1.遵循这些约定,一切顺利

 class Model_name extends CI_Model 

Model_name 是您的类的名称...类名称的第一个字母必须大写,其余名称小写

然后文件名应该是这样的小写

 application/models/model_name.php

【讨论】:

    【解决方案2】:

    这也发生在我身上:
    在 Linux 系统上,它显示您指定的错误,而在窗口上它很好。
    这是因为 Linux 区分大小写。 我做了什么?;

    我将文件从 /core/MY_model 重命名为 /core/MY_Model

    然后,它解决了我的问题。

    【讨论】:

      【解决方案3】:

      CodeIgniter 3 解决方案

      类名和类文件名必须有一个首字母大写

      从 CodeIgniter 3.0 开始,所有类文件名(库、 驱动程序、控制器和模型)必须以类 Ucfirst 命名 方式或换句话说 - 它们必须以大写字母开头。

      例如,如果您有以下库文件:

      application/libraries/mylibrary.php
      

      ...那么你必须将其重命名为:

      application/libraries/Mylibrary.php
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-02-17
        • 2013-06-08
        • 1970-01-01
        • 2016-08-31
        • 2016-04-25
        • 1970-01-01
        • 2018-12-22
        相关资源
        最近更新 更多