Revision #11 has been created by felipe_Brz on Jul 31, 2012, 4:50:50 PM with the memo:
changed 'cookie' to 'cookies' .. apparent typo
« previous (#6) next (#12) »
Changes
Title
unchanged
Cookie management in Yii
Category
unchanged
How-tos
Yii version
unchanged
Tags
changed
cookies, cookie, chttpcookie, ccookiecollection, safe reading
Content
changed
[...]
```php
$cookie = Yii::app()->request->cookies['cookie_name']->value;
```
See also "Safe reading" in the next chapter.
### Writing a cookie
To write a cookie value, usince Yii 1.1.11 you can also access the cookie value directly without accessing the value property first.
```php
$value = (string)Yii::app()->request->cookies['cookie_name'];
```
**Note**: You should only use this if you are sure the cookie exists.
Also this may not work on PHP prior to 5.2 (See [PHP.net -> __toString()](http://www.php.net/manual/en/language.oop5.magic.php#object.tostring "PHP.net -> __toString()")).
See also "Safe reading" in the next chapter.
### Writing a cookie
There are multiple ways to write a cookie:
Since Yii 1.1.11 you don't have to specify the name of the cookie twice.
```php
Yii::app()->request->cookies->add(new CHttpCookie('cookie_name', $value));
```
**Note**: The
f`ol
lowing code:
d` variant is still valid.
Notice, that you have to specify the name twice, if you want to use this:
```php
Yii::app()->request->cookies['cookie_name'] = new CHttpCookie('cookie_name', $value);
```
Notice, that cookie name must be given twice! See also "Reload required" in the next chapter.See also "Reload required" in the next chapter.
### Configure a cookie
Starting with Yii 1.1.11 you can configure an cookie upon creation.
```php
$cookieCollection->add(new CHttpCookie('name', 'value', $options));
```
The option parameter is internally passed to the public method [CHttpCookie::configure()](http://www.yiiframework.com/doc/api/1.1/CHttpCookie#configure-detail "CHttpCookie::configure()") which accepts an array with the following keys:
- [domain](http://www.yiiframework.com/doc/api/1.1/CHttpCookie#domain-detail "domain")
- [expire](http://www.yiiframework.com/doc/api/1.1/CHttpCookie#expire-detail "expire")
- [secure](http://www.yiiframework.com/doc/api/1.1/CHttpCookie#secure-detail "secure")
- [path](http://www.yiiframework.com/doc/api/1.1/CHttpCookie#path-detail "path")
- [httpOnly](http://www.yiiframework.com/doc/api/1.1/CHttpCookie#httpOnly-detail "httpOnly")
### Deleting a cookie[...]
### Cookies are objects
Cookies in Yii are read from [CHttpCookie](http://www.yiiframework.com/doc/api/1.1/CHttpCookie/ "") which is **an object**, that's why you have add **->value** to your code (see example. Also it is important to know that
```php
Yii::app()->request->cookies;
```
is
ian
previous chapter). If you omit that, you'll get warning or error saying that object of class CHttpCookie cannot be converted to a string.instance of [CCookieCollection](http://http://www.yiiframework.com/doc/api/1.1/CCookieCollection "CCookieCollection") which extends [CMap](http://www.yiiframework.com/doc/api/1.1/CMap "CMap"), therefore it is possible to use simliar to an array.
### Safe reading[...]
```php
$cookivalue =
(isset(Yii::app()->request->cookies['cookie_name'])
) ?
Yii::app()->request->cookies['cookie_name']->value : '';
// or
$value = Yii::app()->request->cookies->contains('cookie_name') ?
Yii::app()->request->cookies['cookie_name']->value : '';
```
This way, you'll get either cookie value or an empty string.
This example also gives us idea how to check, if particular cookie exits:[...]