Yii устанавливает пользователя для каждого действия в контроллере

#yii #controller #set #action

#yii #контроллер #установить #Экшен

Вопрос:

я пытаюсь установить пользователя для каждого действия в контроллере.

У меня есть правила доступа,

и мне было установлено 2 разных меню для администратора и квеста.

Но у меня есть одно действие, которого нет ни в одном меню.

Пользователь по умолчанию для действий в yii — quest, поэтому, если я не упомянул действие в меню для администратора, пользователем для этого действия будет quest.

Я не хочу упоминать это действие в меню (макет), но я хочу, чтобы пользователь для этого действия был администратором. Теоретически я хочу установить пользователя для каждого отдельного действия.

 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)
                        ),
                    ),
    ),
));
    }
  

Как вы можете видеть, я не устанавливал test3 в ‘else’, но в тесте 2 я установил перенаправление на test3, и после входа в систему пользователь test1 и test2 не будет квестом, а test3 будет, потому что это значение по умолчанию.
В этой ситуации это не синтаксическая ошибка.

Комментарии:

1. опубликовать еще какой-нибудь код? скажи мне, что ты пробовал? какая ошибка возникает?

2. Можете ли вы быть более конкретным? Что вы подразумеваете под «но это не работает»? Пользователь всегда является гостем или пользователь всегда входит в систему? Что-то еще?