如果它们不在数组中,如何一次删除所有会话变量?
PS我这样设置:
$this->getUser()->setAttribute('PayPalTransaction.hash', $request->getParameter('hash'));
此致 罗马
答案 0 :(得分:8)
sfUser
类(使用$this->getUser()
获得)将所有属性保存在sfNamespacedParameterHolder
中。因此setAttribute()
上的sfUser
函数仅仅是sfNamespacedParameterHolder::setAttribute()
的代理。您可以使用sfUser::getAttributeHolder()
获取对此持有者的引用。
sfNamespacedParameterHolder
还有一个函数clear()
,它会清除所有属性。
要清除所有属性,请使用:
$this->getUser()->getAttributeHolder()->clear()
。
(请注意,当您清除属性持有者时,您仍会进行身份验证(例如登录)。
答案 1 :(得分:7)
另一种方法是,如果您只想删除一个会话变量而不是所有会话变量,则使用以下代码
$this->getUser()->getAttributeHolder()->remove('att_name');
同样,这将只删除一个而不是全部...以清除所有使用Grad
的先前代码答案 2 :(得分:6)
删除命名空间的所有属性:
$this->getUser()->getAttributeHolder()->removeNamespace('yournamespace');