Аргумент 2, передаваемый Symfony \ Component \ HttpFoundation \ Cookie :: __ construct (), должен иметь тип string или null, заданный массив - PullRequest
0 голосов
/ 24 октября 2018

Я обновил свою версию laravel с 5.5 до 5.6 и следовал руководству по обновлению, но есть одна ошибка, которую я не могу выяснить.

Ошибка

Argument 2 passed to Symfony\Component\HttpFoundation\Cookie::__construct() must be of the type string or null, array given

Мой код, генерирующий эту ошибку:

public function show($id, DealService $dealService, CookieJar $cookieJar)
    {
        if(null != $coupon = $dealService->getActiveDealById($id))
        {
            if(!Cookie::has('recent'))
            {
                $ids = [];
                array_unshift($ids, $id);
                $cookieJar->queue('recent', $ids);
            }
            else
            {
                $ids = Cookie::get('recent');
                if(!in_array($id, $ids))
                {
                    array_unshift($ids, $id);
                    $ids[] = $id;
                    $cookieJar->queue('recent', $ids);
                }
            }
            if(!empty($ids))
            {
                $recent_deals = $dealService->getDealsByIds($ids);
            }
            $related_deals = $dealService->getRelatedActiveDeals($id);

            return view('couponia.show', ['coupon' => $coupon, 'recent_deals' => $recent_deals, 'related_deals' => $related_deals]);
        }
        else
        {
            return view('errors.404');
        }
    }

Метод очереди CookieJar выдает исключение какон пытается создать экземпляр Cookie, но этот код прекрасно работал в 5.5, и документация CookieJar также предполагает, что он принимает массив в качестве аргумента.

1 Ответ

0 голосов
/ 27 октября 2018

Проблема заключалась в том, что после обновления библиотека Symphony также была обновлена ​​до версии 3.3, которая больше не поддерживает файлы cookie массивов.На этом этапе решение может заключаться в сериализации массива, а затем десериализации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...