无论常规路径如何,我可以将codeigniter的MVC结构的模型和视图文件夹放置到不同的位置吗
application/views
application/models
到其他地方,可以说
abc/views
pqr/models
在项目文件夹之外。如果可能的话,我该如何实现它。
先感谢您
无论常规路径如何,我可以将codeigniter的MVC结构的模型和视图文件夹放置到不同的位置吗
application/views
application/models
到其他地方,可以说
abc/views
pqr/models
在项目文件夹之外。如果可能的话,我该如何实现它。
先感谢您
CodeIgniter 当前稳定版本中没有自定义路径的功能(models
而在 CI 3.x 中,您可以更改路径以及和)。views
view
application
system
但是您可以在典型views
和models
文件夹之外加载文件。
文件的路径是相对的。因此,您可以使用在路径中上../
一级。
例如,如果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
:确保对orabc
目录的直接访问受到限制。在其中添加一个.htaccess
文件,其内容为Deny from all
.
要自定义“应用程序”文件夹之外的模型和视图,请按照以下简单步骤操作,
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);
默认情况下,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 中给出
我不确定您是否可以将视图和模型移动到不同的位置,但您可以将应用程序文件夹的位置更改为您选择的位置。
您可以将您的应用程序目录移动到不同的位置,然后打开您的 index.php 文件并使用新路径值设置 $system_folder 和 $application_folder 变量,最好使用完整路径,例如“/www/MyUser/system”。
参考:http ://ellislab.com/codeigniter/user-guide/installation/index.html
希望这会有所帮助。