Php 使用massLogout时如何扩展CBehavior
我在component文件夹中创建了一个文件Php 使用massLogout时如何扩展CBehavior,php,yii,yii-components,yii-events,Php,Yii,Yii Components,Yii Events,我在component文件夹中创建了一个文件applicationBehavior.php,如下所示: <?php class applicationBehavior extends CBehavior { public function events() { return array( 'onBeginRequest'=>'massLogout', ); } pub
applicationBehavior.php
,如下所示:
<?php
class applicationBehavior extends CBehavior
{
public function events()
{
return array(
'onBeginRequest'=>'massLogout',
);
}
public function massLogout()
{
$owner = $this->getOwner();
if($owner->getGlobalState('massLogout') && ($owner->user->name!=='bertho'))
{
$owner->user->clearStates();
$owner->catchAllRequest=array('maintenance','view'=>'index');
}
}
}
我会用它来做应用程序的设置。如果我运行控制器以禁用我的应用程序(维护模式
),则会以某种方式调用:
public function actionTurnoff()
{
Yii::app()->setGlobalState('massLogout',true);
$this->render('turnoff');
}
所有用户将自动停止,除非我使用用户名的用户:bertho
现在的问题是,当我(用户名:bertho
)注销时,我将失去控制
重新进入我的应用程序
如果普通用户(未登录
)不受此行为的影响,我应该如何创建代码
我已尝试检查这些条件:
$user = $owner->user->name;
然后:
if($user!='Guest'){
if($owner->getGlobalState('massLogout') && $user=='bertho'){
$owner->user->clearStates();
$owner->catchAllRequest=array('maintenance','view'=>'index');
}
}
但它总是出错:会话\u重新生成\u id():会话对象销毁失败
我该怎么办
if($user!='Guest'){
if($owner->getGlobalState('massLogout') && $user=='bertho'){
$owner->user->clearStates();
$owner->catchAllRequest=array('maintenance','view'=>'index');
}
}