首页 > 解决方案 > 未定义的变量laravel 7

问题描述

我不断得到

未定义变量:产品

产品.blade

@foreach ($products as $prod)
    <td>{{ $prod->name }} </td>
    <td>{{ $prod->buying_price }}</td>
    <td>{{ $prod->selling_price }}</td>
    <td>{{ $prod->weight}}</td>
@endforeach

产品控制器

public function index()
{
    $products = products::all();
    return view('products.products')->with('products', $products);
}

我也试过

public function index()
{
    $products = products::all();
    return view ('products.products',compact('products'));
    
}

路线

Route::resource('products', 'ProductsController');

标签: laravelvariablesundefinedlaravel-7

解决方案


首先,您应该确保您没有输入任何错误。从您提供的代码中可以看出,只要您拥有products模型,它就应该可以工作。

通常 Laravel 的工作方式是你有一个路由,在你的情况下,url.test/products它绑定到ProductsController. 您尚未在路线中提供该方法。也许就是这样。通常,该路线看起来类似于以下内容:

Route::get('/projects', 'ProjectController@index')->name('projects');

或者在 Laravel 8 中它看起来像这样:

Route::get('/projects/all', [App\Http\Controllers\ProjectController::class, 'index'])->name('projects');

那么控制器中的索引函数应该与此类似。在这种情况下,您上面的代码没有任何问题

$projects = Project::all();

return view('projects', compact('projects'));

你应该能够$projects在你的视野内打电话。也试试看是否$projects满了。只需dd($projects)在您的控制器中执行此操作,以确保它返回某些内容。

我建议您重新检查整个过程,看看您是否犯了任何可能导致这种情况的拼写错误或错误,因为您上面的代码完全没问题,只是没有在路线中提供正确的功能。

编辑:

我现在可以看到,您拼写错误 [product]。当您调用 Product 模型时,它应该是 [Product]。


推荐阅读