开发者

Session deletion in Symfony 1.4

开发者 https://www.devze.com 2023-04-06 06:06 出处:网络
How do I delete all session variables at once if they are not in Array? PS I set them this way: $this->getUser()->setAttribute(\'开发者_JAVA百科PayPalTransaction.hash\', $request->getParame

How do I delete all session variables at once if they are not in Array?

PS I set them this way:

$this->getUser()->setAttribute('开发者_JAVA百科PayPalTransaction.hash', $request->getParameter('hash'));

Regards, Roman


The sfUser class (which you get with $this->getUser()), keeps all it's attributes in a sfNamespacedParameterHolder. So the setAttribute() function on sfUser if merely a proxy to the sfNamespacedParameterHolder::setAttribute(). You can get the reference to this holder with sfUser::getAttributeHolder().

The sfNamespacedParameterHolder also has a function clear(), which clears all attributes.

So to clear all attributes, use: $this->getUser()->getAttributeHolder()->clear().

(Please note that you will still be authenticated (e.g. logged in) when you clear the attribute holder).


Another way if you want to remove just one session variable not all of them is to use the following code

$this->getUser()->getAttributeHolder()->remove('att_name');

Again this will only remove one not all ... to clear all use the previous code by Grad


To remove all attributes of a namespace :

$this->getUser()->getAttributeHolder()->removeNamespace('yournamespace');
0

精彩评论

暂无评论...
验证码 换一张
取 消