在codeigniter中分离模型文件夹、视图文件夹和控制器文件夹。

问题描述 投票:1回答:4

我可以把codeigniter的MVC结构的模型和视图文件夹放在不同的位置,而不考虑常规路径。

application/views
application/models

到其他地方,比方说

abc/views
pqr/models

外的项目文件夹.如果可能的话,那么我怎么能实现它。

谢谢你在前面

codeigniter project directory-structure
4个回答
3
投票

没有自定义的功能 modelsviews CodeIgniter当前稳定版本中的路径 (而在CI 3.x中,你可以修改 view 途径以及 applicationsystem).

但是,你可以在典型的 "文件 "之外加载你的文件。viewsmodels 文件夹。

文件的路径是相对的。所以你可以使用 ../ 去一个 UP 路径中的级别。

例如,如果 abc 文件夹放在靠近 application,你应该使用 ../../abc 来到达该文件夹。

请看下面的例子。

模型:

class Model_name extends CI_Model {

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

}

Controller:

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

作为一个 附注: 确保直接进入 pqrabc 目录是受限制的。.htaccess 的内容的文件。Deny from all.


1
投票

要在 "应用程序 "文件夹之外自定义模型和视图,请按照这些简单的步骤进行。

  • 创建 My_Loader.php 文件在'applicationcore'目录下
  • 将以下代码复制到自定义中 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);

1
投票

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

但你可以通过在文件 {CI DIR}systemcoreLoader.php 而在主要的 索引.php 文件。

请看下面的例子。

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

第80行内容为

protected $_ci_model_paths =    array(APPPATH);

改成

protected $_ci_model_paths =    array(MODELPATH);

而在主要的 索引.php 文件,添加

$model_folder = 'pqr';

define('MODELPATH', $model_folder);

以自定义CI 3.x中已经给出的视图文件夹路径。


0
投票

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

你可以将你的应用程序目录移动到不同的位置,然后打开index.php文件,用新的路径值设置$system_folder和$application_folder变量,最好是完整的路径,例如'wwwMyUsersystem'。

参考文献。http:/ellislab.comcodeigniteruser-guideinstallationindex.html。

希望对大家有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.