Laravel "Undefined variable" 在 blade 文件中

Laravel "Undefined variable" in blade file

我在网上看到了很多与此类似的问题,并尝试了所有建议但没有任何效果,我不确定我错过了什么。 我只想在我的 home.blade.php 视图中显示我数据库中的所有产品,并尝试了许多不同的方法,但总是出现相同的错误。

所以这是我在 HomeController 中的功能:

public function index()
    {
        $produtos = Produtos::all();
        return view('home', ['produtos' => $produtos]);
    }

这是我的 web.php:

Route::get('home', [HomeController::class, 'index'])->name('home');

最后 home.blade.php 视图中我尝试使用但未被识别的部分:

@foreach($produtos as $produto)
                                         
    <div class="col-md-4 mb-3">
        <div class="card">
          <img class="img-fluid" alt="100%x280" src="">
             <div class="card-body">
                <h4 class="card-title">{{$produto->nome}}</h4>
                     <p class="card-text">{{$produto->categoria}}</p>
              </div>
         </div>
    </div>
  @endforeach

我也试过这样做: 家庭控制器:

public function index()
    {
        return view('home');
    }

web.php:

Route::get('home', function () {
    $produtos = DB::select('select * from produtos');
    return view('home', ['produtos' => $produtos]);
});

但是同样的错误:

Undefined variable "$produtos" appear.

谢谢!

像这样使用路由

在控制器顶部使用 use App\Produtos;

像这样写你的路由文件代码。

Route::get('/home', 'HomeController@index')->name('home');

这样写在你的控制器文件中
use App\Models\Produtos;  // or use App\Produtos; 

public function index()
{
    $produtos = Produtos::get();
    return view('home',compact('produtos'));
}

public function index()
{
    $produtos = \DB::table('produtos')->get();
    return view('home',compact('produtos'));
}

非常感谢您的帮助!问题其实很简单,我忽略了,我不小心使用了“return view('home');”在 2 条不同的路线中,这就是它无法识别变量的原因。

我通过排除另一个来修复它,只是在我的 web.php:

Route::get('/', function () {
    $produtos = \DB::table('produtos')->get();
    return view('home', compact('produtos'));
});