【问题标题】:Codeigniter loading model from different subfolder来自不同子文件夹的 Codeigniter 加载模型
【发布时间】:2017-06-21 22:38:12
【问题描述】:

我的 Codeigniter 项目遇到了一个奇怪的问题。

我在以下路径中有两个模型文件:

models/public/Dish_model.php
models/admin/Dish_model.php

分别用于前端和后端模型。

在以下路径的控制器中:

controllers/admin/Dish.php

我正在尝试使用以下方法加载管理区域模型文件:

$this->load->model('admin/dish_model');

但它正在加载公共模型文件。

即使我将此行注释掉,公共模型文件仍然会被加载。

这一切都是突然发生的,它之前工作正常,我最近没有更改任何提到的文件。

有什么帮助吗?

【问题讨论】:

  • 你怎么知道它正在加载另一个模型文件?使用替代方式。 $this->load->model('admin/dish_model', 'amodel'); 并像这样使用$this->amodel->method();
  • 我知道是因为我尝试从每个模型中调用一个函数,但只有另一个模型中的一个函数有效!
  • 我也试过你的建议...没区别:\

标签: php codeigniter model-view-controller model


【解决方案1】:

以防其他人遇到同样的问题。

在我的例子中,在仔细遵循控制器的执行路径后,我发现另一个模型正在由自动加载列表中的库加载。

从自动加载数组中删除该库解决了问题。

【讨论】:

    【解决方案2】:

    从其子目录或子文件夹调用/加载模型。

    models/public/Dish_model.php
    

    比如说Dish_model

    class Dish_model extends CI_Model{
        public function __construct(){
           parent::__construct();
        }
        public function the_method(){
           return 'return value';
        }
    }
    

    models 是原生 ci 模型目录,public 是子目录。所以要加载Dish_model 在控制器上执行此操作

    $this->load->model('public/Dish_model','DModel');
    

    DModel 就像一个别名。 所以从控制器调用模型是

    echo $this->DModel->the_method();
    

    它会返回return value 希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多