在codeigniter中分离Model文件夹,视图文件夹和控制器文件夹

时间:2013-07-24 12:19:20

标签: codeigniter project directory-structure

我可以将模型和视图签名的MVC结构的文件夹放置到不同的位置,而不管常规路径

application/views
application/models

到其他地方,让我们说

abc/views
pqr/models
项目文件夹外的

。 如果可能的话,我怎样才能实现它。

提前谢谢

4 个答案:

答案 0 :(得分:2)

在CodeIgniter当前稳定版中没有自定义modelsviews路径的功能(在CI 3.x中,您可以更改view路径以及{ {1}}和application

但您可以将文件加载到典型的systemviews文件夹之外。

文件的路径是相对的。因此,您可以使用models在路径中输入 UP 级别。

例如,如果../文件夹放在abc附近,您应该使用application来访问该文件夹。

看一下下面的例子:

<强>型号:

../../abc

<强>控制器:

class Model_name extends CI_Model {

    public function baz($value='')
    {
        return $value;
    }

}

查看:

class Foo extends CI_Controller {

    public function bar()
    {
        $this->load->model('../../pqr/models/model_name');

        $data['var'] = $this->model_name->baz('Yes It Works!');

        $this->load->view('../../abc/views/view_name', $data);
    }

}

以下是示例文件夹结构:

<?php echo $var; ?>

作为旁注:确保直接访问application system pqr /models /model_name.php abc /views /view_name.php pqr目录受到限制。在其中添加abc文件,内容为.htaccess

答案 1 :(得分:1)

要在“应用程序”文件夹之外自定义模型和视图,请按照以下简单步骤进行操作

  • 在'application / core'目录中创建My_Loader.php文件
  • 将以下代码复制到自定义My_Loader.php

    class MY_Loader extends CI_Loader {
    
    function mymodel($model, $folder = '',$vars = array(), $return = FALSE) {
    
        array_push($this->_ci_model_paths, "");
        parent::model($model);
    }
    
    
    function myview($folder, $view, $vars = array(), $return = FALSE) {
            $this->_ci_view_paths = array_merge($this->_ci_view_paths, array(APPPATH . '../' . $folder . '/' => TRUE));
            return $this->_ci_load(array(
                    '_ci_view' => $view,
                    '_ci_vars' => $this->_ci_object_to_array($vars),
                    '_ci_return' => $return
            ));
    }
    
    • 保存文件并在控制器中调用并加载模型(位于应用程序文件夹之外):

    $this->load->mymodel('folder/model');

并且对于视图,

$this->load->myview('views','view_dir/view-php-file', $data);

答案 2 :(得分:1)

默认情况下,CodeIgniter当前稳定版本中没有自定义模型和视图路径的功能(而在CI 3.x中,您可以更改视图路径以及应用程序和系统)。

但是您可以通过在文件 {CI DIR} /system/core/Loader.php 和主要的 index.php 文件中进行更改来实现。

看下面的例子:

修改CI 3.x中的文件 Loader.php

第80行显示为

protected $_ci_model_paths =    array(APPPATH);

更改为

protected $_ci_model_paths =    array(MODELPATH);

然后在主 index.php 文件中添加

$model_folder = 'pqr';

define('MODELPATH', $model_folder);

自定义CI 3.x中已提供的views文件夹路径

答案 3 :(得分:0)

我不确定您是否可以将视图和模型移动到不同的位置,但您可以将应用程序文件夹的位置更改为您选择的位置。

您可以将应用程序目录移动到其他位置,然后打开index.php文件并使用新路径值设置$ system_folder和$ application_folder变量,最好使用完整路径,例如: '/ WWW / MYUSER /系统'。

参考:http://ellislab.com/codeigniter/user-guide/installation/index.html

希望这有用。