Size: a a a

Laravel для начинающих

2021 June 11

D

Dimk_O in Laravel для начинающих
hah все равно null в куке
источник

AH

Andrey Helldar in Laravel для начинающих
Ну всё правильно. json куки вырезает :)
Они там не нужны и лишь занимают место в запросе.
источник

FV

Fio'La Vior'Tuom in Laravel для начинающих
понял. спасибо. но этот класс из коробки идет))
источник

AH

Andrey Helldar in Laravel для начинающих
Не совсем. "Из коробки" идёт то, что в папку "vendor" устанавливается, а этот является частью проекта, который разработчик может изменять.
источник

FV

Fio'La Vior'Tuom in Laravel для начинающих
источник

FV

Fio'La Vior'Tuom in Laravel для начинающих
точно! вспомнил что  сам это написал
источник

D

Dimk_O in Laravel для начинающих
и как тогда отдать куку
источник

AH

Andrey Helldar in Laravel для начинающих
Сомневаюсь, что класс https://github.com/laravel/laravel/blob/8.x/app/Providers/AppServiceProvider.php в твоём проекте такой же пустой как "из коробки")

И, судя по ошибке, там кто-то букву в методе недописал: withouDoubleEncoding, а должно быть withoutDoubleEncoding

Для наглядности построчно расположу:

withouDoubleEncoding
withoutDoubleEncoding
источник

FV

Fio'La Vior'Tuom in Laravel для начинающих
понял. опять не дожал клавишу просто. сам виноват
источник

AH

Andrey Helldar in Laravel для начинающих
Судя по доке есть несколько вариантов. Зависит от того, как ты пытаешься отдать.

https://laravel.com/docs/8.x/responses#attaching-cookies-to-responses
источник

AH

Andrey Helldar in Laravel для начинающих
Код в студию
источник

D

Dimk_O in Laravel для начинающих
public function index(Product $product)
   {
       $this->addToSeenRecently($product);
       return view('product', compact('product'));
   }
   private function addToSeenRecently($id)
   {
       $ids = request()->cookie('products_seen_recently', []);
       $products = cookie()->forever('products_seen_recently', array_push($ids, $id));
       return response()->json(['success' => true])->withCookie($products);
   }
источник

D

Dimk_O in Laravel для начинающих
index это страница продукта
источник

FV

Fio'La Vior'Tuom in Laravel для начинающих
да вы прям альтруист))
источник

AH

Andrey Helldar in Laravel для начинающих
1. Кука не отдаётся в принципе потому что недостаточно вернуть её с приватного метода - её надо вернуть браузеру.

2.

public function index(Request $request, Product $product)
{
   $cookie = $this->addToSeenRecently($request, $product);

   return response()
       ->view('product', compact('product'))
       ->withCookie($cookie);
}

private function addToSeenRecently(Request $request, Product $product)
{
   $ids = $request->cookie('products_seen_recently', []);

   array_push($ids, $product->id);

   $ids = array_unique($ids);

   return cookie()->forever('products_seen_recently', $ids);
}
источник

AH

Andrey Helldar in Laravel для начинающих
У нас принято на "ты")
источник

D

Dimk_O in Laravel для начинающих
а нельзя ведь массивы пихать в куку
источник

D

Dimk_O in Laravel для начинающих
Symfony\Component\HttpFoundation\Cookie::__construct(): Argument #2 ($value) must be of type ?string, array given, called in
источник

D

Dimk_O in Laravel для начинающих
нужна тогда сериализация?
источник

AH

Andrey Helldar in Laravel для начинающих
Получается что так. Я забыл этот момент. Крайний раз с куками работал лет 6 назад.
источник