Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
В общем, нужно удалить массив кук:
По одной каждая кука удаляется.
$tempCookie = Cookie::forget($id);
return Redirect::to('/cart/index')->withCookie($tempCookie);
Но либо этот код должен выплнится в цикле, либо withCookie должен передать массив.
Красивого решения не нашел. Пришлось по быдлокодить, и вот что у меня получилось.
public function getCookdel($id){
foreach($_COOKIE as $key => $value){
$key = (int)$key;
if($key > 0){
$tempCookie = Cookie::forget($key);
return Redirect::to('cart/'.$key.'/cookdel')->withCookie($tempCookie);
}
}
return Redirect::to('cart/index');
}
Такой код в принципе работает. Но циклическое перенаправление с удалением по одной куки мне не нравится. Должно быть более изящное решение. Например, передать в withCookie массив. Не понятно, почему, withErrors принимает массив, а withCookie нет...
Не в сети
Куки можно удалять обычным php способом.
public function delcookie(){
foreach($_COOKIE as $key){
if(!is_int($key)) continue;
setcookie($key,' ');
}
return Redirect::to('cart/index');
}
функция удалить все куки, имена которые, целые числа.
На деле не пробовал.
P.S. Для хранения карзины в куках, я использую json формат. {"1":{"price":1000, "amount":2}}. И что бы очистить корзину, достаточно удалить одну куку.
Не в сети
Проверил. Увы не работает..
Не в сети
Но либо этот код должен выплнится в цикле
Логично. Почему не сделал?
циклическое перенаправление с удалением по одной куки мне не нравится
Сервер тоже будет не в восторге.
Route::get('cookie', function()
{
$cookies = [
'first',
'second',
'third',
];
foreach($cookies as $cookie)
{
Cookie::queue($cookie, null);
}
return Response::make('Cookies were added');
});
Route::get('cookie/clear', function()
{
$cookies = [
'first',
'second',
'third',
];
foreach($cookies as $cookie)
{
Cookie::queue($cookie, null, -1);
}
return Response::make('Cookies were removed');
});
Страницы 1