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

时间:2014-07-01 08:38:45

标签: yii controller set action

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

我有访问规则,

我为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将因为这是默认的。 在这种情况下,它不是语法错误。

0 个答案:

没有答案