在加载视图时,在codeigniter 3上,默认路径为application / views /
我希望能够将默认路径更改为application / views / template /
我用来更改MY_Loader.php eval
上的默认视图路径,如下所示。 Currenly它只适用于CI2似乎不适用于CI3
问题在codeigniter 3.0版本上,更改默认视图路径的最佳方法是什么,可以类似于我从CI2到CI3的MY_Loader。
$this->_ci_view_path = APPPATH .'views/template/';
答案 0 :(得分:4)
问题出在这里
CI2版本
$this->_ci_view_path = APPPATH .'views/somefoldername/';
现在CI3版本
$this->_ci_view_paths = array(
APPPATH . 'views/somefoldername/' => TRUE
);
如何更改Codeigniter 3中的默认视图路径
应用程序>核心> MY_Loader.php
<?php
class MY_Loader extends CI_Loader {
public function __construct() {
$this->_ci_ob_level = ob_get_level();
$this->_ci_view_paths = array(
APPPATH . 'views/somefoldername/' => TRUE
);
$this->_ci_library_paths = array(APPPATH, BASEPATH);
$this->_ci_model_paths = array(APPPATH);
$this->_ci_helper_paths = array(APPPATH, BASEPATH);
log_message('debug', "Loader Class Initialized");
}
}
以下代码中的glob中的此符号*表示模块名称。
<?php (defined('BASEPATH')) OR exit('No direct script access allowed');
/* load the MX_Loader class */
require APPPATH."third_party/MX/Loader.php";
class MY_Loader extends MX_Loader {
public function __construct() {
$this->_ci_ob_level = ob_get_level();
// Default
$this->_ci_view_paths = array(
APPPATH . 'views/' => TRUE
);
// Modules
$module_view_paths = glob(APPPATH . 'modules/*/views/template/', GLOB_ONLYDIR);
foreach ($module_view_paths as $module_view_path) {
$this->_ci_view_paths = array(
$module_view_path => TRUE,
);
}
$this->_ci_library_paths = array(APPPATH, BASEPATH);
$this->_ci_model_paths = array(APPPATH);
$this->_ci_helper_paths = array(APPPATH, BASEPATH);
log_message('debug', "Loader Class Initialized");
}
}
这允许您为HMVC加载视图
执行此操作$this->load->view('folder_name/view_name');
而不是
$this->load->view('template/folder_name/view_name');
答案 1 :(得分:2)
如果再次检查index.php
文件,您会看到每条线路都得到了很好的解释。对于主题中的这一特定行写道:
如果您确实移动了这个,请使用此文件夹的完整服务器路径。
答案 2 :(得分:1)
实际上这不是你问题的答案,但它将作为替代解决方案。
覆盖view()
方法或通过将CI_Loader
扩展到达到预期结果来创建新功能
public function my_view($file,$data)
{
$this->view("template/$file",$data);
}
答案 3 :(得分:1)
将此更改为
$this->_ci_view_path = APPPATH .'views/template/'; # Works on CI 3.0-
此
$this->_ci_view_paths = array(APPPATH.'views/template/' => TRUE); # Works on CI 3.0+