为什么数据没有传递到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}}

访问数据

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...