CI3中实现页眉页脚复用及解决BASEURL未定义异常问题
CodeIgniter 3 问题解决方案
一、实现页眉(header)和页脚(footer)全局复用
最简洁高效的方式是通过自定义基础控制器实现,让所有业务控制器继承该基础控制器,统一处理模板加载:
- 创建基础控制器
在application/core目录下新建MY_Controller.php(文件名前缀需与config/config.php中$config['subclass_prefix']一致,默认是MY_):
defined('BASEPATH') OR exit('No direct script access allowed'); class MY_Controller extends CI_Controller { public function __construct() { parent::__construct(); // 可在此加载全局通用的模型、库、辅助函数 } // 封装模板加载方法,自动包含header和footer protected function load_template($content_view, $data = []) { $this->load->view('template/header', $data); $this->load->view($content_view, $data); $this->load->view('template/footer', $data); } }
- 修改业务控制器
让你的Mahasiswa控制器继承MY_Controller,并使用封装的load_template方法:
defined('BASEPATH') OR exit('No direct script access allowed'); class Mahasiswa extends MY_Controller { public function __construct(){ parent::__construct(); $this->load->model('m_mahasiswa'); } public function index() { $data['data_mahasiswa'] = $this->m_mahasiswa->data_mahasiswa(); // 只需传入内容视图路径,自动加载header和footer $this->load_template('home/index', $data); } }
后续新增的控制器都继承MY_Controller,调用load_template即可实现全局复用页眉页脚,无需重复写三次load->view。
二、解决"uncaught exception undefined constant 'BASEURL'"异常
这个错误是因为你在代码(通常是视图文件)中使用了未定义的BASEURL常量,CodeIgniter 3中正确的做法是使用base_url()辅助函数:
- 配置基础URL
打开config/config.php,确保已设置正确的base_url:
$config['base_url'] = 'http://localhost/你的CI项目目录/'; // 若使用HTTPS,改为对应的HTTPS地址
- 加载URL辅助函数
两种方式二选一:
- 自动加载:打开
config/autoload.php,在$autoload['helper']中添加url:$autoload['helper'] = array('url'); - 手动加载:在控制器的
__construct方法中加载:$this->load->helper('url');
- 替换视图中的错误写法
将视图中类似BASEURL的写法替换为base_url(),例如:
<!-- 错误写法 --> <link rel="stylesheet" href="<?php echo BASEURL; ?>assets/css/style.css"> <!-- 正确写法 --> <link rel="stylesheet" href="<?php echo base_url('assets/css/style.css'); ?>">
注意:CodeIgniter 3中没有BASEURL或BASE_URL常量,官方推荐使用base_url()函数来获取项目基础地址,避免自行定义常量导致冲突。
内容的提问来源于stack exchange,提问作者Blackwight
相关产品推荐
相关产品推荐

