Установка и чтение кук в Yii2
Установка и чтение кук в Yii2
Подскажите как установить в Yii2 установить одну единственную куку. Есть имя куки, её значение, путь, домен и другие параметры куки. Что надо сделать, чтобы из контроллера установить эту куку в браузер? А также как прочитать куки, пришедшие из браузера?
Re: Установка и чтение кук в Yii2
Код: Выделить всё
// В контроллере ставим куки
if (!isset(Yii::$app->request->cookies['test'])) {
Yii::$app->response->cookies->add(new \yii\web\Cookie([
'name' => 'test',
'value' => 'testValue'
]));
}
// В view выводим куки
echo Yii::$app->request->cookies['test'];
// или
echo Yii::$app->request->cookies->getValue('test');
Re: Установка и чтение кук в Yii2
То что надо, спасибо.
Re: Установка и чтение кук в Yii2
Это будет не уникальная кука.
http://stackoverflow.com/questions/7573 ... uniqueness
Нужно еще path устанавливать
Сам сталкивался, что создавались куки с одними и теми же названиями, т.е. не уникальные
http://stackoverflow.com/questions/7573 ... uniqueness
Нужно еще path устанавливать
Сам сталкивался, что создавались куки с одними и теми же названиями, т.е. не уникальные
Re: Установка и чтение кук в Yii2
По умолчанию в Yii 2 $path = '/'. Так что все должно работать правильно.
Re: Установка и чтение кук в Yii2
Ещё можно расширить класс \yii\web\Cookie и заполнить его свойства нужными значениями под себя и использовать его вместо базового \yii\web\Cookie.
Re: Установка и чтение кук в Yii2
такая штука - идея с валидацией кук хорощая, но имхо нехватает метода для чтения одной конкретной куки без валидации, чтоб можно было прочесть конкретную устанавливаемую скриптом куку без отключения валидации на все остальные.
такой финт ушами смысл не имеет куки один раз берутся
цепляь криптовалку для js как-то накладно
такой финт ушами смысл не имеет куки один раз берутся
Код: Выделить всё
public function beforeAction($action){
if($action->id=='index' or $action->id=='stat'){
\Yii::$app->request->enableCookieValidation=false;
$pageSize=\Yii::$app->request->cookies->getValue('grid_pp',\Yii::$app->uconfig->getValue('grid_pp'));
\Yii::$app->request->enableCookieValidation=true;
..........
}
}
Последний раз редактировалось Insolita 2014.07.11, 14:46, всего редактировалось 2 раза.
Re: Установка и чтение кук в Yii2
Блин совсем мозги обфреймворкились $_COOKIE никто же не отменял...
Re: Установка и чтение кук в Yii2
$cookies = Yii::$app->response->cookies;
$cookies->add(new Cookie([
'name' => 'test',
'value' => 1,
'expire' => time() + 180,
]));
Кука не создается... Что я делаю не так?
$cookies->add(new Cookie([
'name' => 'test',
'value' => 1,
'expire' => time() + 180,
]));
Кука не создается... Что я делаю не так?
- vitalik1183
- Сообщения: 1675
- Зарегистрирован: 2014.07.01, 08:42
Re: Установка и чтение кук в Yii2
Не помогло...vitalik1183 писал(а):попробуйте указать домен
- vitalik1183
- Сообщения: 1675
- Зарегистрирован: 2014.07.01, 08:42
Re: Установка и чтение кук в Yii2
даvitalik1183 писал(а):time совпадает с реальностью?
- vitalik1183
- Сообщения: 1675
- Зарегистрирован: 2014.07.01, 08:42
Re: Установка и чтение кук в Yii2
ставите на корневой домен или саб? точку указали перед доменом?
Yii2!
Re: Установка и чтение кук в Yii2
1. я указал только доменное имя 'test.dev'vitalik1183 писал(а):ставите на корневой домен или саб? точку указали перед доменом?
2. Что значит точка перед доменом?
- vitalik1183
- Сообщения: 1675
- Зарегистрирован: 2014.07.01, 08:42
Re: Установка и чтение кук в Yii2
Через setcookie все работает.vitalik1183 писал(а):.domain.com
через setcookie кука ставится нормально?
Re: Установка и чтение кук в Yii2
Видимо, у меня уникальная проблема
- vitalik1183
- Сообщения: 1675
- Зарегистрирован: 2014.07.01, 08:42
Re: Установка и чтение кук в Yii2
cookieValidationKey установлена в request в конфиге?
скиньте полный листинг кода, глянем чего вы там понаписали. все должно ставится нормально.
скиньте полный листинг кода, глянем чего вы там понаписали. все должно ставится нормально.
Yii2!
Re: Установка и чтение кук в Yii2
В конфиге:
В модели:
Код: Выделить всё
'request' => [
'enableCsrfValidation' => false,
'cookieValidationKey' => 'sdi8s#fnj98jwiqiw;qfh!fjgh0d8f',
В модели:
Код: Выделить всё
public static function SetCookie()
{
$cookies = Yii::$app->response->cookies;
$cookies->add(new Cookie([
'name' => 'test1',
'value' => 1,
'domain' => 'test.dev',
'expire' => time() + 180,
]));
$cookies->add(new Cookie([
'name' => 'test2',
'value' => Yii::$app->request->get('loc'),
'domain' => 'test.dev',
'expire' => time() + 180,
]));
$cookies->add(new Cookie([
'name' => 'test3',
'value' => date("H:i:s"),
'domain' => 'test.dev',
'expire' => time() + 15,
]));
}