セッションを通じてカートに商品を追加するときに、カートから商品を1つずつ削除できるようにしたいと思います。どのように私はそれをすることになっていますか?これは私のCartController
public function add(Request $request, $id)
{
$product_from_db = Product::find($id);
$product = [];
$product['id'] = $id;
$product['title'] = $product_from_db->title;
$product['image'] = $product_from_db->image;
$product['slug'] = $product_from_db->slug;
$product['price'] = $product_from_db->price;
$product['quantity'] = $request->input('quantity');
$request->session()->push('cart', array_merge((array)Session::get('cart',[]), $product));
flash()->success('Prekė sėkmingai pridėtą į krepšelį.');
return redirect('/prekes');
}
public function show()
{
$products = session('cart');
$subtotal = [];
return view('cart.show')->with(array(
'products' => $products,
'subtotal' => $subtotal
));
}
これは私のカートです:
@foreach($products as $p)
<tr>
<td class="col-md-6">
<div class="media">
<a class="thumbnail pull-left" href="#"> <img class="media-object" src="{{URL::to($p['image'])}}" style="width: 72px; height: 72px;"> </a>
<div class="media-body">
<a style="padding-left: 2%" href="{{URL::to('prekes/'.$p['slug'])}}" class="text-warning"><strong>{{$p['title']}}</strong></a>
</div>
</div>
</td>
<td class="col-md-1" style="text-align: center">
<input type="number" class="form-control" id="quantity" value="{{$p['quantity']}}">
</td>
<td class="col-md-1 text-center"><strong>{{number_format($p['price'], 2, '.', ',')}} €</strong></td>
<td class="col-md-1 text-center"><strong>{{number_format($p['price']*$p['quantity'], 2, '.', ',')}} €</strong></td>
<td class="col-md-1">
<button type="button" class="btn btn-danger">
<span class="glyphicon glyphicon-remove"></span> DELETE ITEM
</button></td>
</tr>
@endforeach
カートから必要なアイテムを削除する方法の例を教えてください。
私はこれをやろうとしました:
public function delete($id)
{
$product = session::forget('cart', $id)->first();
$product->destroy($id);
return redirect()->back();
}
<a href="{{URL::to('jusu-prekiu-krepselis/trinti-preke/'.$p['id'])}}" type="button" class="btn btn-danger">
<span class="glyphicon glyphicon-remove"></span> Remove
</a>
このエラーが発生します: Call to a member function first() on null
これを行うと、セッションからではなくデータベースから製品が削除されます。
今、削除すると、このエラーが発生します:Undefined index: image
私の見解では。
$id
変更して特定のアイテムを削除するには
public function delete($id)
{
$product = session::forget('cart', $id)->first();
$product->destroy($id);
return redirect()->back();
}
と
public function delete($id)
{
$products = session('cart');
foreach ($products as $key => $value)
{
if ($value['id'] == $id)
{
unset($products [$key]);
}
}
//put back in session array without deleted item
$request->session()->push('cart',$products);
//then you can redirect or whatever you need
return redirect()->back();
}
それが役に立てば幸い :)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加