我的控制器
public function addcart(Request $request)
{
$data1 = array($request);
if (is_array($data1) || is_object($data1)) {
foreach ($data1 as $data1) {
// if (!empty($id)) {
$data[] = [
'id' => $data1->id,
'quantity' => $data1->quantity,
];
foreach ($data as $data) {
$data2 = Cookie::get('cart');
if (Cookie::get('cart') == null) {
setcookie('cart', json_encode($data));
}else{
Cookie::queue('cart', json_encode($data));
}
}
}
}
return redirect()->back();
}
我的刀片
@foreach ($data as $data)
<form action="{{ url('/addcart') }}" method="post">
@csrf
<tr>
<td class="w-25">
<img src="/foodimage/{{ $data->image }}" class="img-fluid img-thumbnail"
alt="Sheep">
</td>
<td>{{ $data->food_name }}</td>
<td>{{ $data->price }}</td>
<td value="{{ $data->category_id }}">{{ $data->category_id }}</td>
<td><button type="button" class="btn btn-info">{{ $data->available }}</button></td>
<td>{{ $data->description }}</td>
<td><input type="number" class="form-control" name="quantity" min="1">
<input type="number" name="id" value="{{ $data->id }}" hidden="">
<button type="submit" class="btn btn-primary">add cart</button>
</td>
{{-- <td><a class="btn btn-danger" href="{{ url('/removefood',$users->id) }}">Delete</a></td> --}}
</tr>
</form>
@endforeach
每当我向购物车添加新值时,我的 cookie 就会替换之前的值。我想保留以前的数据,并在每次提交表单时在cookie中插入新数据。 谁能帮我? TIA
我自己已经给出了答案。如果您需要的话,这是代码。
public function addcart(Request $request)
{
$quantity = $request->quantity;
$id = $request->id;
$cart = isset($_COOKIE["cart"]) ? $_COOKIE["cart"] : "[]";
$cart = json_decode($cart);
$cart1 = json_decode(json_encode($cart), true);
$cartcheck = $cart1['id'];
$newarray = new stdClass();
$newarray->id = $id;
$newarray->quantity = $quantity;
$newarray1 = json_decode(json_encode($newarray), true);
$newarraycheck = $newarray->id;
if (empty($cart)) {
setcookie("cart", json_encode($newarray));
}
$flag = 0;
foreach ($cartcheck as $cartcheck) {
if ($cartcheck == $newarraycheck) {
$flag = 1;
}
}
if($flag==0){
$result = array_merge_recursive($cart1, $newarray1);
setcookie("cart", json_encode($result));
}else{
echo "Already in cart";
}
return redirect()->back();
}
以下是代码的更新版本。此修改版本:
public function addcart(Request $request){
$quantity = $request->quantity;
$id = $request->id;
$cart = isset($_COOKIE["cart"]) ? json_decode($_COOKIE["cart"], true) : [];
$newItem = ['id' => $id, 'quantity' => $quantity];
$flag = false;
foreach ($cart as $item) {
if ($item['id'] == $id) {
$flag = true;
break;
}
}
if (!$flag) {
$cart[] = $newItem;
setcookie("cart", json_encode($cart));
} else {
echo "Already in cart";
}
return redirect()->back();
}