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

Laravel Blade模板出现未声明变量错误的原因及解决求助

Laravel 视图未声明变量错误排查与解决

我是Laravel新手,尝试从数据库读取数据并在alunos Blade模板展示,但一直提示未声明变量$alunos错误。以下是我的代码:

控制器代码

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Aluno;

class AlunoCoontroller extends Controller
{
    public function index()
    {
        $alunos = Aluno::all();
        return view('alunos',['alunos' => $alunos]);
    }

    public function create()
    {
        return view('alunos.create');
    }
}

Model代码

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Aluno extends Model
{
    use HasFactory;
}

迁移代码

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('_alunos', function (Blueprint $table) {
            $table->id();
            $table->string('nome');
            $table->string('filme');
            $table->string('RA');
            $table->string('senha');
            $table->string('cpf');
            $table->string('cep');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('_alunos');
    }
};

Blade模板代码

@extends('layouts.main')
 
@section('title', 'Star-Fox Company')

@section('content')
    <h1>tela onde o aluno vai inserri os dados para acessar seu cadastro</h1>

    @foreach ($alunos as $aluno)
        <p>Nome: {{ $aluno->nome }}</p>
        <p>Matricula: {{ $aluno->filme }}</p>
        <p>Curso: {{ $aluno->curso }}</p>
        <p>Senha: {{ $aluno->senha }}</p>
    @endforeach
@endsection

我已尝试修改变量名称,但错误仍然存在,恳请帮忙解释错误原因并提供解决办法。


错误原因及解决办法

  • 控制器类名拼写错误
    控制器类名AlunoCoontroller多了一个字母o,正确应为AlunoController。这个错误会导致路由无法映射到控制器的index方法,视图根本接收不到$alunos变量。
    解决:修改控制器文件名和类名为AlunoController,同时更新路由文件中对应的控制器引用。

  • 模型与数据库表名不匹配
    Laravel Eloquent默认规则:Aluno模型对应alunos表,但你的迁移创建的是_alunos表(开头多下划线),导致模型无法读取数据,最终传递给视图的变量无效。
    解决:
    方案1:修改迁移文件中的表名为alunos,执行php artisan migrate:fresh重新迁移。
    方案2:在Aluno模型中手动指定表名:

    class Aluno extends Model
    {
        use HasFactory;
        protected $table = '_alunos';
    }
    
  • Blade模板引用不存在的字段
    模板中使用了{{ $aluno->curso }},但迁移未创建curso字段,会引发额外错误。
    解决:要么在迁移中添加$table->string('curso');并重新迁移,要么删除模板中该字段的输出代码。

  • 路由配置检查
    确保routes/web.php中正确配置了指向控制器的路由:

    Route::get('/alunos', [App\Http\Controllers\AlunoController::class, 'index']);
    

    若路由未正确指向,页面不会执行index方法,自然无法传递$alunos变量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 10:01:16