CodeIgniter出现Using $this when not in object context错误求助
修复CodeIgniter视图中“Using $this when not in object context”错误
错误原因
视图文件create_loan.php里使用$this->load->view()时,当前代码不在CodeIgniter控制器的对象上下文里——也就是说这个视图没有通过框架的标准加载流程被调用,导致$this不是有效的CI控制器对象。
解决方案
1. 确保视图通过控制器加载
检查对应的控制器代码,必须通过控制器方法调用框架的视图加载函数来渲染create_loan.php,而不是直接访问视图文件或用原生PHP引入:
// 示例控制器方法(比如Loan控制器的create方法) public function create() { // 正确加载视图 $this->load->view('loan/create_loan'); }
访问时要通过控制器路由(比如http://your-domain/index.php/loan/create),不要直接访问application/views/loan/create_loan.php文件。
2. 检查视图的引用方式
如果create_loan.php是被其他视图或文件引用,必须用框架的视图加载方式,不能用原生的include/require:
// 错误写法 include(APPPATH . 'views/loan/create_loan.php'); // 正确写法 $this->load->view('loan/create_loan');
3. 对比正常运行的create_borrower代码
参照create_borrower对应的控制器和视图加载逻辑:
- 确认
create_loan的控制器方法结构和create_borrower一致 - 检查视图文件的命名、路径拼写是否正确(注意大小写,Windows下不敏感但部署到Linux会出问题)
临时兜底方案(不推荐,仅作应急)
如果暂时无法调整加载流程,可以在create_loan.php开头添加判断,避免错误:
if (!isset($this) || !method_exists($this, 'load')) { // 重定向到控制器入口 header('Location: ' . base_url('loan/create')); exit; }
内容的提问来源于stack exchange,提问作者Angeli Bantugan
相关产品推荐
相关产品推荐

