You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CodeIgniter 4中Undefined variable $home错误排查求助

问题分析与解决方法

核心原因:控制器方法未被正确触发

你遇到的Undefined variable $home错误,本质是视图没有接收到控制器传递的$home变量,最可能的原因是你访问的路由没有指向indexController()方法。

CodeIgniter 4 默认会调用控制器的index()方法作为入口,如果你没有配置自定义路由,直接访问Index控制器时,系统会执行index()而非indexController(),导致$data数组根本没有被创建和传递给视图。


解决方法

方法1:修改控制器方法名为默认的index()

把控制器里的indexController()改名为index(),无需额外配置路由即可触发:

namespace App\Controllers;

use CodeIgniter\Controller;
use App\Models\indexModel;

class Index extends Controller
{
    public function index() // 改为默认方法名
    {
        $account = new indexModel();
        $data = [
            'home' => $account->findAll()
        ];
        echo view('partial/header', $data);
    }
}

方法2:配置自定义路由指向indexController()

如果想保留indexController()方法名,需要在app/Config/Routes.php里添加路由规则:

$routes->get('/', 'Index::indexController');

这样访问网站根目录时,系统会调用Index控制器的indexController()方法。


额外规范建议(非必须但推荐)

CodeIgniter 4 遵循PSR-4命名规范,模型类名建议使用大驼峰格式,把indexModel改为IndexModel,同时文件名对应改为IndexModel.php:

namespace App\Models;

use CodeIgniter\Model;

class IndexModel extends Model // 大驼峰类名
{
    protected $table = "home";
    protected $allowedFields = [
        'front_name',
        'back_name',
        'jalan',
        'email',
        'telepon',
        'facebook',
        'whatsapp',
        'instagram'
    ];
}

控制器里加载模型时也要对应修改:

use App\Models\IndexModel;
// ...
$account = new IndexModel();

内容的提问来源于stack exchange,提问作者Fadjrin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 22:12:41