Удаление сессии в Symfony 1.4 - PullRequest
       14

Удаление сессии в Symfony 1.4

4 голосов
/ 20 сентября 2011

Как мне удалить все переменные сеанса сразу, если их нет в массиве?

PS Я установил их следующим образом:

$this->getUser()->setAttribute('PayPalTransaction.hash', $request->getParameter('hash'));

С уважением, Роман

Ответы [ 3 ]

9 голосов
/ 20 сентября 2011

Класс sfUser (который вы получаете с $this->getUser()) хранит все свои атрибуты в sfNamespacedParameterHolder. Таким образом, функция setAttribute() на sfUser является просто прокси для sfNamespacedParameterHolder::setAttribute(). Вы можете получить ссылку на этого владельца с sfUser::getAttributeHolder().

sfNamespacedParameterHolder также имеет функцию clear(), которая очищает все атрибуты.

Чтобы очистить все атрибуты, используйте: $this->getUser()->getAttributeHolder()->clear().

(Обратите внимание, что вы все равно будете аутентифицированы (например, вошли в систему), когда очистите держатель атрибута).

7 голосов
/ 22 сентября 2011

Другой способ, если вы хотите удалить только одну переменную сеанса, но не все из них, это использовать следующий код

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

Опять же, это удалит только одну не все ..., чтобы очистить все, использовать предыдущуюкод Grad

6 голосов
/ 22 сентября 2011

Чтобы удалить все атрибуты пространства имен:

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