【问题标题】:How to load model in CI 3 with HMVC?如何使用 HMVC 在 CI 3 中加载模型?
【发布时间】:2015-06-27 20:02:17
【问题描述】:

我正在使用带有 HMVC 扩展的框架 CodeIgniter 3,但我无法加载模型。当我尝试这样做时,我看到下一个错误:无法找到您指定的模型:保护。

模型文件 (protection.php) 放在 /application/modules/main/models/ 并扩展此代码:

class Protection extends MX_Model
    { 
    function Protection()
    {
        parent::Model();
    }
    function check($val)
    {
        $tpl = "![^\w\d\s]*!";
        if(is_array($val))
        {
            foreach($val as $k => $v)
            {
                $val[$k] = preg_replace($tpl,"",$v);
            }
        }
        else
        {
                $val = preg_replace($tpl,"",$val);
        }
        return $val;
    }
}

控制器文件放置在 /application/modules/main/controllers/ 与此代码用于加载模型并调用她的函数:

$this->load->model('protection');
$gj = "I'--m_Y%ou#r-Fat/+her";
$this->prt->check($gj);
echo $gj;

我尝试重命名模型文件,将其放在其他文件夹中,但都失败了。

【问题讨论】:

标签: php codeigniter model frameworks hmvc


【解决方案1】:

HMVC models 应该只扩展 CI_Model 控制器在控制器上使用 MX_ 并且对于模型名称而不是仅仅将保护作为模型名称我认为最好有 model_protection 这样codeigniter就不会混淆.

modules > 

modules > main >

modules > main > controllers

modules > main > models

modules > main > views

关于构造函数

不使用parent::Model();

但是使用 parent::__construct(); 就像在我的示例中一样

在控制器上

$this->load->model('modulename/model_protection');

$this->model_protection->check($key);

文件名 Model_protection.php

<?php 

class Model_protection extends CI_Model {

public function __construct() {

parent::__construct();

}

public function check($val) {

}

}

提示所有控制器、模型和库的文件名和类名的首字母应为大写

【讨论】:

  • 如何避免在 $this->load->model('modulename/model_protection') 中输入 module_name;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-01
  • 2023-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-02
相关资源
最近更新 更多