为什么数据没有传递到 Laravel 中的视图?

Why isn’t data passed to the view in Laravel?

数据未显示在视图页面中。查看页面已加载,但数据未传递。

作为我的第一个Laravel项目,我找不到错误?如果有人帮忙解决一下,那将是一个很大的帮助。

CartController.php

use Illuminate\Http\Request;
use App\Product;
use App\Category;

class CartController extends Controller
{

    public function index()
    {
         $product = Product::get();
         return view ('cart')->with(compact('products'));
         
     }
           
    public function show($id)
    {
        $product = Product::find($id);
       
        return view('cart')->with(compact('product'));
   }
}
   

cart.blade.php

@foreach($product as $p) 
    <tr class="">                                     
        <td class="d-none d-md-table-cell">
            <a href="#"><img class="img-fluid max-width-100 p-1 border border-color-1" src="{{asset('/storage/admin/'.$p ['prod_image_path'] ) }}" alt="Image Description"></a>
        </td>
        
        <td data-title="Product">
            <a href="#" class="text-gray-90">{{ $p ['prod_name'] }}</a>
        </td>
       
        <td data-title="Price">
            <span class="">LKR {{ $p ['prod_price'] }}.00</span>
        </td>
    </tr>
@endforeach

web.php

Route::get('/cart', 'CartController@index')->name('cart');
Route::get('/cart/{id}', 'CartController@show')->name('cart');

在您的索引方法中,您的变量被命名为 $product(单数),但您将 products(复数)发送到您的视图。因此,在您看来,这将是 null。更正拼写错误,您的索引应该没问题。

对于您的 show 方法,@TimLevis 已经指出您正在检索 Product 的单个实例而不是集合。

return view('products', compact('product'));

除非有数组属性,否则不能迭代单个对象。 您可以像这样在视图中访问您的数据 {{$product->price}}