我尝试为控制器中的每个操作设置用户。
我有访问规则,
我为admin和quest设置了2个不同的菜单。
但我有一个不在任何菜单中的动作。
yii中的操作的默认用户是任务,因此如果我没有在管理员的菜单中提到操作,则该操作的用户将被执行。
我不想在菜单(布局)中提及该操作,但我希望该操作的用户是admin。 理论上,我想为每个单独的动作设置用户。
public function actionTest()
{
!Yii::app()->user->isGuest;
...
}
类似的东西,但这不起作用。
更多代码:::
我有控制器TestController
我有布局main.php
我有登录表单和操作注销。
所以接下来:
我的控制器:
class TestController extends Controller
{
/**
* Declares class-based actions.
*/
public function accessRules()
{
return array(
array('allow',
'actions'=>array('login'),
'users'=>array('*'),
),
array('allow',
'actions'=>array('test1','test2','logout','test3'),
'users'=>array('@'),
),
);
}
public function actionLogin()
{
$this->render('login');
}
public function actionTest1()
{
$this->render('test1');
}
public function actionTest2()
{
$this->render('test2');
}
public function actionTest3()
{
$this->render('test3');
}
public function actionLogout()
{
...
}
}
在布局main.php中,我有菜单标准:
if(Yii::app()->user->isGuest)
{
$this->widget('bootstrap.widgets.TbNavbar',array(
'items'=>array(
array(
'class'=>'bootstrap.widgets.TbMenu',
'items'=>array(
array('label'=>'Login', 'url'=>array('/test/login')),
),
),
),
));
}
else
{
$this->widget('bootstrap.widgets.TbNavbar',array(
'items'=>array(
array(
'class'=>'bootstrap.widgets.TbMenu',
'items'=>array(
array('label'=>'Test1', 'url'=>array('/test/test1')),
array('label'=>'Test2', 'url'=>array('/test/test2')),
array('label'=>'Logout ('.Yii::app()->user->name.')', 'url'=>array('/test/logout'), 'visible'=>!Yii::app()->user->isGuest)
),
),
),
));
}
就像你可以看到我没有在'else'中设置test3但是在测试2中我将重定向设置为test3并且在登录后test1和test2用户将不会被执行但是test3将因为这是默认的。 在这种情况下,它不是语法错误。