未定义变量 laravel 7

Undefined variable laravel 7

我不断得到

Undefined variable: products

products.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');

首先你应该确保你没有打错字。从您提供的代码可以看出,只要您拥有 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) 即可,因此请确保它 returns 一些内容。

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

编辑:

我明白了,你拼错了[product]。它应该是 [Product],因为您正在调用 Product 模型。