Yii为控制器中的每个操作设置用户

Yii为控制器中的每个操作设置用户,yii,controller,set,action,Yii,Controller,Set,Action,我尝试为控制器中的每个操作设置用户 我有acces规则 我为管理员和任务设置了两个不同的菜单 但我有一个动作是任何菜单上都没有的 yii中操作的默认用户是quest,所以若我并没有在管理员菜单中提到操作,那个么该操作的用户将是quest 我不想在菜单(布局)中提到该操作,但我希望该操作的用户是管理员。 理论上,我希望为每个单独的操作设置用户 public function actionTest() { !Yii::app()->user->isGuest;

我尝试为控制器中的每个操作设置用户

我有acces规则

我为管理员和任务设置了两个不同的菜单

但我有一个动作是任何菜单上都没有的

yii中操作的默认用户是quest,所以若我并没有在管理员菜单中提到操作,那个么该操作的用户将是quest

我不想在菜单(布局)中提到该操作,但我希望该操作的用户是管理员。 理论上,我希望为每个单独的操作设置用户

public function actionTest()
    {
        !Yii::app()->user->isGuest;
        ...
    }
类似的东西,但这不是工作

更多代码:::

我有控制器测试控制器

我有layout 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()
            {
               ...
            }

}
在layout 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之后,用户将不是quest,而是test3,因为这是默认设置。
在这种情况下,这不是语法错误。

是否发布更多代码?告诉我你试过什么?会出现什么错误?你能更具体一点吗?你说的“但这不起作用”是什么意思?用户是否始终是来宾,或者用户是否始终登录?还有别的吗?