2017-03-14 151 views
-2

我在單一產品頁面上顯示一個產品時出現問題。因此,如果我現在在首頁單擊產品,我想查看特定產品。按單個產品頁面上的ID顯示產品

現在我看到所有的產品,而不是我點擊的產品。

這是路線:

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()as $ product)'並期望它顯示單個產品?投票關閉太寬 – Steve

+0

我只是在學習的人,如果你沒有幫助我,你不必回答 – Mette

+0

我不想粗魯。我只是不認爲你是通過提問這樣的問題來學習任何東西。您應該研究基礎知識(變量,控制結構),而不是複雜的mvc框架。 – Steve

回答

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

謝謝您的評論! – Mette

0

你需要傳遞一個Product對象。因此,轉換控制方法:

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

並在視圖您需要刪除@foreach and @endforeach

+0

感謝您的評論! – Mette

+0

嗨,爲什麼拉拉維爾改變我的路線:.../public/product/js/bootstrap.min.js – Mette

0

更改getProduct函數返回:

return view('pages.product', ['product' => $product]); 
相關問題