2017-03-14 145 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]); 
相关问题