2015-06-27 66 views
0

我使用HMVC擴展框架CodeIgniter 3,我無法加載模型。當我嘗試這樣做時,我看到下一個錯誤:無法找到您指定的模型:保護。如何使用HMVC加載CI 3中的模型?

模型文件(protection.php)置於/應用/模塊/主/模型/並延伸此代碼:

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; 
    } 
} 

控制器文件放置在/應用/模塊/主/控制器/與此代碼對於負載型號和呼叫她的功能:

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

我試過重命名模型文件,將他放在其他文件夾中,但它都失敗了。

+0

請提供您的文件結構。你可以使用這個網站來創建你的文件結構爲文本:** http://www.FileStructureGenerator.com** – CodeGodie

回答

1

HMVC 模式應該延伸CI_Model只控制器使用MX_上控制器也爲型號名稱,而不是僅僅有保護模式的名字,我覺得這是最好有model_protection這樣笨也不會感到困惑。

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) { 

} 

} 

提示所有控制器和模型和庫應該有存在的第一個字母爲大寫的文件名和類名

+0

如何擺脫在 $ this-> load-> model('modulename/model_protection' ); –