我可以将模型和视图签名的MVC结构的文件夹放置到不同的位置,而不管常规路径
application/views
application/models
到其他地方,让我们说
abc/views
pqr/models
项目文件夹外的。 如果可能的话,我怎样才能实现它。
提前谢谢
答案 0 :(得分:2)
在CodeIgniter当前稳定版中没有自定义models
和views
路径的功能(在CI 3.x中,您可以更改view
路径以及{ {1}}和application
)。
但您可以将文件加载到典型的system
和views
文件夹之外。
文件的路径是相对的。因此,您可以使用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)
要在“应用程序”文件夹之外自定义模型和视图,请按照以下简单步骤进行操作
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
希望这有用。