在单个产品页面按ID显示产品

时间:2017-03-14 12:26:50

标签: php laravel e-commerce product

我在单个产品页面上只显示一个产品时出现问题。因此,如果我现在在首页点击产品,我想看到该特定产品。

现在我看到所有产品而不是我点击的产品。

这是路线:

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

3 个答案:

答案 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]);