Yii2 Cookie没有生成

问题描述 投票:2回答:2

我正在尝试设置cookie,但cookie没有被保存。以下是我的尝试:

$cookies = Yii::$app->response->cookies;

$cookies->add(new \yii\web\Cookie([
        'name' => 'abc',
        'value' => 'xyz',
        'expire' => time() + 86400 * 365,
]));

$cookies1 = Yii::$app->request->cookies;

if ($cookies1->has('abc'))
        $cookieValue = $cookies1->getValue('abc');

echo 'value : '.$cookieValue;

echo '<pre>'; print_r($_COOKIE);

$ cookieValue不包含任何值。 Cookie未生成。我究竟做错了什么?

cookies yii2 setcookie yii2-advanced-app
2个回答
2
投票

你的代码很好。您的问题是您正在尝试设置然后在同一请求中获取cookie。

您的浏览器尚未收到回复,因此在您尝试阅读之前,它没有机会添加Cookie。

您只需要在单独的请求中设置然后获取cookie:

public function actionSetCookie() {

    $cookies = Yii::$app->response->cookies;

    $cookies->add(new \yii\web\Cookie([
        'name' => 'abc',
        'value' => 'xyz',
        'expire' => time() + 86400 * 365,
    ]));

    echo 'Cookie set!';
}

public function actionGetCookie() {

    $cookies1 = Yii::$app->request->cookies;

    if ($cookies1->has('abc'))
        $cookieValue = $cookies1->getValue('abc');

    echo 'value : '.$cookieValue;
}

0
投票

Set your cookie like this

$cookie = Yii::$app->response->cookies;

$cookie = new \yii\web\Cookie
  ([
        'name' => 'abc',
        'value' => 'xyz',
        'expire' => time() + 86400 * 365,
  ]);

Yii::$app->getResponse()->getCookies()->add($cookie);

//check cookie is exist or not

if(Yii::$app->getRequest()->getCookies()->has('abc'))
{
     // if exist then get cookie value
     $username =  Yii::$app->getRequest()->getCookies()->getValue('abc');
}
© www.soinside.com 2019 - 2024. All rights reserved.