@makeloo

Yii2 куда теряется кука при переходе на другую страницу?

на странице site.ru/site/index
Добавляю новую куку:
$cookies = Yii::$app->response->cookies;

    // добавление новой куки в HTTP-ответ
    $cookies->add(new \yii\web\Cookie([
        'name' => 'language',
        'value' => 'zh-CN',
    ]));


после чего перехожу на любую другую страницу, и при попытке вывести куку с помощью команды
<pre>
     $cookies = Yii::$app->response->cookies;
     print_r($cookies);


Выдает пустой массив
yii\web\CookieCollection Object
(
    [readOnly] => 
    [_cookies:yii\web\CookieCollection:private] => Array
        (
        )

)


Но при таком способе вывода
print_r($_COOKIE);
Все же нахожу свою куку
Array
(
    [advanced-frontend] => d302qt09a66ufpa6h8pf9sbqn1
    [_csrf-frontend] => 45e72fe5c56707ee174e40397a050ee2c05dca4b12a1d928d14256434010de98a:2:{i:0;s:14:"_csrf-frontend";i:1;s:32:"8gj4-V-HDakUKW9E39XMJ6EEcsR6_bDW";}
    [language] => f1dc92de966487919bea9a0e6e5240af52c079c42ef8afbad662ba53fc89a2ffa:2:{i:0;s:8:"language";i:1;s:5:"zh-CN";}
)


Подскажите пожалуйста, где ошибка. Почему куки не видно при попытке обращения к ней средствами Yii2?
  • Вопрос задан
  • 1137 просмотров
Решения вопроса 1
qonand
@qonand
Software Engineer
При переходе на другую страницу Вы посылаете запроса (request) к веб-серверу в котором содержится вся информация в том числе и установленные ранее куки. Но для чтения кук Вы используете не request а ОТВЕТ от сервера (response). Соответственно решение Вашей проблемы - использовать объект request
$cookies = Yii::$app->request->cookies;
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы