2017-03-14 29 views
-2

単一の製品ページに1つの製品しか表示されないという問題があります。ですから、フロントページの製品をクリックすると、特定の製品を見たいと思っています。製品を単一の製品ページで表示する

ここで私がクリックした製品の代わりに、すべての製品が表示されています。

これはルートです:

Route::get('/product/{id}', [ 
    'uses' => '[email protected]', 
    '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 
+1

これは、多くのレベルで間違っています。あなたは '@foreach(App \ Product :: all()を$ productとして書く')とそれが単一の製品を表示すると思いますか?あまりにも広すぎると投票する – Steve

+0

男私はちょうど学んでいる、あなたは私を助けていない場合は答えなくていいです – Mette

+0

私は失礼しようとしていません。私はちょうどあなたがこのような質問をすることによって何かを学んでいるとは思わない。あなたは複雑なmvcフレームワークではなく、基本(変数、制御構造)に取り組むべきです。 – Steve

答えて

0

あなたはすべての製品をループしています

@foreach(App\Product::all() as $product) 

これがエラーの原因です。

次に、あなたのビューで、あなただけあなたがProductオブジェクトを渡す必要がある1つの製品

<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> 
+0

コメントありがとうございます! – Mette

0

を表示最初正しくコントローラから

$product = Product::find($id); 
return view('pages.product', ['product' => $product]); 

を、製品を返却する必要があります。だから、変更制御方法:

public function getProduct($id) 
{ 
    $product = Product::find($id); 
    return view('pages.product', ['product' => $product]); 
} 

とビューに、あなたは@foreach and @endforeach

+0

コメントありがとうございました! – Mette

+0

こんにちは、なぜ私のルートを変更するlaravelは:.../public/product/js/bootstrap.min.js – Mette

0
を返すために、あなたの getProduct機能を変更

削除する必要があります。

return view('pages.product', ['product' => $product]); 
関連する問題