使用CodeIgniter加载模型时出现CI_Template未找到错误求助
解决Fatal error: Class 'CI_Template' not found的问题
看起来你遇到的核心问题是模板库没有被正确加载就直接调用了$this->template,和加载apotek_data模型本身关系不大,只是刚好在添加模型加载代码后触发了这个报错(可能之前代码里有其他隐式加载模板库的逻辑,现在构造函数执行顺序变化后暴露了问题)。
下面是具体的排查和修复步骤:
1. 先加载模板库再调用方法
CI框架里任何库(包括自定义/第三方模板库)都需要先加载才能通过$this->xxx调用。你需要把模板库的加载放在$this->template->xxx调用之前,调整构造函数顺序:
function __construct() { parent::__construct(); // 优先加载模板库 $this->load->library('template'); // 再加载模型、数据库等资源 $this->load->model('apotek_data'); $this->load->database(); // 最后调用模板库的方法 $this->template->write_view('sidenavs', 'template/default_sidenavs', true); $this->template->write_view('navs', 'template/default_topnavs.php', true); }
2. 确认模板库文件的正确性
检查你的模板库文件是否符合CI的命名规范:
- 文件必须放在
application/libraries/目录下 - 文件名需为首字母大写的
Template.php - 文件内的类名要和文件名对应(比如类名为
Template,CI会自动映射为小写的$this->template)
如果你的模板库是带CI_前缀的核心扩展类,也要确保文件放在application/core/目录下,类名命名为CI_Template。
3. 可选:设置自动加载模板库
如果你的整个项目都需要用到模板库,可以在application/config/autoload.php里配置自动加载,避免在每个控制器里重复写加载代码:
找到$autoload['libraries']数组,添加'template':
$autoload['libraries'] = array('database', 'template');
4. 排查模型冲突(可能性较低)
如果调整后还是报错,可以暂时注释掉$this->load->model('apotek_data');,看看视图是否能正常显示。如果恢复正常,说明你的apotek_data模型里可能存在语法错误、类名冲突,或者重写了核心方法干扰了模板库的加载,这时候需要检查模型文件的代码细节。
按照以上步骤调整后,应该就能解决CI_Template找不到的错误,视图也能正常渲染了。
内容的提问来源于stack exchange,提问作者Ria W
相关产品推荐
相关产品推荐

