我在单个产品页面上只显示一个产品时出现问题。因此,如果我现在在首页点击产品,我想看到该特定产品。
现在我看到所有产品而不是我点击的产品。
这是路线:
Route::get('/product/{id}', [
'uses' => 'productController@getProduct',
'as' => 'product.single'
]);
这是控制器:
public function getProduct($id)
{
$product = Product::find($id);
return view('pages.product', ['id' => $product->id]);
}
这是视图(product.blade.php):
@foreach(App\Product::all() as $product)
<div class="col-sm-6 col-md-4">
<div class="thumbnail">
<img src= {{$product->imagePath}} alt="...">
<div class="caption">
<h3> {{$product->title}} </h3>
<p class="discription"> {{$product->discription}} </p>
<div class="clearfix">
<div class="pull-left price"/>$ {{$product->price}}</div>
<a href= {{ route('product.addToCart', ['id' => $product->id ]) }} class="btn btn-danger pull-right" role="button">Add to cart</a>
</div>
</div>
</div>
@endforeach
答案 0 :(得分:0)
在您看来,您正在使用
循环浏览所有产品@foreach(App\Product::all() as $product)
这就是造成错误的原因。
您需要先从控制器中正确退回产品
$product = Product::find($id);
return view('pages.product', ['product' => $product]);
然后在您的视图中,您只显示一个产品
<img src= {{$product->imagePath}} alt="...">
<div class="caption">
<h3> {{$product->title}} </h3>
<p class="discription"> {{$product->discription}} </p>
<div class="clearfix">
<div class="pull-left price"/>$ {{$product->price}}</div>
<a href= {{ route('product.addToCart', ['id' => $product->id ]) }} class="btn btn-danger pull-right" role="button">Add to cart</a>
</div>
答案 1 :(得分:0)
您需要传递Product
个对象。因此,将控制器方法更改为:
public function getProduct($id)
{
$product = Product::find($id);
return view('pages.product', ['product' => $product]);
}
在视图中,您需要删除@foreach and @endforeach
答案 2 :(得分:0)
将getProduct
功能更改为返回:
return view('pages.product', ['product' => $product]);