Есть сайт с компаниями. Компанию можно добавить в избранное и удалить. Идентификатор избранной компании сохраняется в куках. На странице компании все работает без проблем. Компания добавляется и удаляется из кук без проблем. Но на странице со списком избранных компаний просто мистика)). После добавления компании она появляется на странице избранных либо сразу, либо после n-го количества перезагрузок. Тоже и с удалением. Пример работы можно посмотреть на страницах -
Страница компании (куки работают правильно),
Страница избранного (куки работают как хотят). Добавление и удаление происходит по нажатии на звездочку.
Вот часть кода для установки кук
$favorite[] = $id; //Идентификатор компании для добавления
$cookies = Yii::$app->response->cookies;
$cookies->add(new \yii\web\Cookie([
'name' => 'favoriteCompanies',
'value' => serialize($favorite),
'expire' => time() + 60*60*24*365
]));
а так получаю
$cookies = Yii::$app->request->cookies;
if ($cookies->has('favoriteCompanies') && $cookies->getValue('favoriteCompanies') != '')
return $cookies->getValue('favoriteCompanies');
else {
return false;
}
При удалении компании просто удаляется ее идентификатор из массива
$favorite
. Код для работы с cookies на обеих страницах один и тот же. Подскажите в чем может быть проблема.
P.S. Проблема точно есть. Тестировало несколько человек. Нужно добавить несколько компаний в избранное, а потом перейти на страницу Избранное и пробовать их оттуда удалять. А вообще я допиливаю за другим кодером сайт, он реализовал через куки. Думал просто где ошибка. А теперь просто хочу понять почему не работает именно такой вариант. Ведь мало где еще придется с куками работать. А тут такое. Причем проблема не только с установкой кук средствами фреймворка. Стандартный php код работает точно так же. И что самое интересное, я проследил за процессом, кука удаляется, а при последующей загрузке Избранное опять жива, и так неопределенное количество раз, пока после очередной перезагрузки страницы она все-таки не умрет.