CodeIgniter 3.1.11能否像控制器一样实现视图路径重定向?
CodeIgniter视图加载路径别名配置方案
实现原理
通过扩展CodeIgniter核心的Loader类,重写视图加载逻辑,给视图名配置别名映射,不需要修改原有业务代码和视图文件的实际存储位置,即可完成路径自动转换,适配迁移后的目录结构。
操作步骤
- 新增核心扩展类
在application/core目录下新建MY_Loader.php文件,写入以下代码:
<?php class MY_Loader extends CI_Loader { public function view($view, $vars = array(), $return = FALSE) { // 读取配置中的视图别名映射 $alias_map = $this->config->item('view_alias_map'); // 如果存在对应别名,替换为实际存储路径 if (isset($alias_map[$view])) { $view = $alias_map[$view]; } // 批量迁移场景可选:如果所有原根目录视图都放在partials下,直接开启自动加前缀逻辑,无需逐个配置 // if (strpos($view, '/') === FALSE) { // $view = 'partials/' . $view; // } return parent::view($view, $vars, $return); } }
- 配置视图别名映射
在application/config/config.php中添加自定义配置项,配置原有视图名和实际路径的对应关系:
$config['view_alias_map'] = [ 'header' => 'partials/header', 'footer' => 'partials/footer', // 其他需要映射的视图按格式添加即可 ];
验证效果
配置完成后,原有业务代码中$this->load->view('header');无需修改,系统会自动加载views/partials/header.php文件,完全满足迁移需求。
注意事项
- 如果你修改过
$config['subclass_prefix']配置项,需要将MY_Loader.php的文件名前缀改为你设置的对应值 - 该方案不会影响原有正常路径的视图加载,仅匹配到映射规则的视图会做路径转换
内容的提问来源于stack exchange,提问作者eggplants
相关产品推荐
相关产品推荐

