Codeigniter从不同子文件夹加载模型

时间:2017-02-04 17:15:03

标签: php codeigniter model-view-controller model

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

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

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

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

在以下路径中的控制器中:

controllers/admin/Dish.php

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

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

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

即使我对此行发表评论,公共模型文件仍会被加载。

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

任何帮助?

2 个答案:

答案 0 :(得分:2)

如果其他人遇到同样的问题。

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

从自动加载阵列中删除该库可解决此问题。

答案 1 :(得分:2)

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

<?php
function clean($name, $max) {
// Remove everything except letters numbers . and @ in the variable
preg_replace("/[^A-Za-z0-9.\-_@]/","",$name);

// Do not allow excessively long entries - length set in function call
// Could use a word wrap here - add a \\n after a certain amount of characters
$name = substr($name, 0, $max);
return $name;
}

// If the form has been submitted do this
if(isset($_FILES['filename']['tmp_name'])) {

// Temporary upload image name 
$original_image = $_FILES['filename']['tmp_name'];

// Name to save the image as - in this case the same as the original
// The same folder as the code
$new_image = $_FILES['filename']['name'];  

// Cleanup the text.
$text_submitted = clean ( $_POST['text_submitted'], 18 );

// Build the imagemagick command - using rgba so the opacity of the text can be set
$cmd = "$original_image -pointsize 50 -font /var/www/html/static/fonts/arial.ttf -fill rgba\(0,0,0,0.4\) ".
" -gravity center -annotate +0+0 \"$text_submitted\" ";

//save image
// I believe I need to save the file here????

//dl image
header("Content-type: image/jpeg");
header("Content-disposition: attachment; filename=\"".basename($new_image)."\"");
while (ob_get_level()) {
    ob_end_clean();
}
readfile($new_image);

// Coment out to display the command - good for debugging
//echo $cmd;

// Setup the array for the error reporting
$array = array();

// The array is to hold any errors you may get
// Coment out the if function after debugging
exec("convert $cmd  $new_image 2>&1", $array);
if ( !empty($array) ){
echo "<br >There were some errors during the Imagemagick conversion:<br >
<pre><br >".print_r($array)."<br>"; 
echo "</pre>";
}
            }                      
else { 
?>

让我们在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'; } } 它是原生ci模型目录,models它是一个子目录。所以加载public在控制器上执行此操作

Dish_model

$this->load->model('public/Dish_model','DModel'); 它就像一个别名。 所以从控制器调用模型是

DModel

它将返回echo $this->DModel->the_method(); 希望得到它的帮助。