@IDDH

Yii2. Организация вывода с разными ролями по одному пути?

Добрый день!
Есть несколько ролей.
При входе на сайт пользователей с разными ролями, все они должны видеть один и тот же layout, и, например, переходя по одному и тому же пути - иметь разный контент этого layout'a.

Например,
есть 3 роли: role_1, role_2, role_3.
Пользователи переходят по урлу "/".
И каждый из них видит свой контент внутри этого layout'a.
т.е. пользователь с ролью role_1 - видит view_1, пользователь с ролью role_2 - видит view_2 и т.д.
Логика для view's - так же отличается.

Посоветуйте, пожалуйста, как это более грамотно организовать? Чтобы контроллеры не раздувались и не было switch'ей по роли в каждом методе(контроллере).

Проблема именно в том, что логика для каждого рендера view у каждой роли разная и для каждой роли в методе контроллера придется писать что-то типа:

switch($role) {
    case 'role_1': 
                ..... 
        $params = arr1;
        break;
    case 'role_2': 
        .....
        $params = arr2;
        break;

    
    case 'role_3': 
        .....
        $params = arr2;
        break;

}
return $this->render('index-' . $role, $params);

Спасибо
  • Вопрос задан
  • 204 просмотра
Решения вопроса 1
zetamen
@zetamen
В поисках нового
Создайте для каждой роли свой контроллер: Role1Controller, Role2Controller, Role3Controller.
И создайте правило маршрутизации, которое будет в зависимости от роли выбирать контроллер.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Если дело только в разных view, то можно так:
return $this->render('index_'.$user->role);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы