Kohana несколько контроллеров по умолчанию на основе ролей - PullRequest
1 голос
/ 23 июля 2011

Я хочу отобразить совершенно разные макеты для пользователей с разными ролями в корневом URL-адресе моего приложения.В настоящее время я достигаю этого, используя следующие строки в bootstrap.php.

if (Auth::instance()->logged_in()){
  Route::set('default', '(<controller>(/<action>(/<id>)))')
   ->defaults(array('controller' => 'profile','action'     => 'index',));
}    
else{ 
 Route::set('default', '(<controller>(/<action>(/<id>)))')
  ->defaults(array('controller' => 'welcome','action'     => 'index',));
}

Какая лучшая практика для достижения этой цели в Кохане?Можно ли добавить дополнительные строки для разных ролей в bootstrap.php.

Спасибо

Ответы [ 3 ]

0 голосов
/ 25 июля 2011

Почему не изменить базовый шаблон в ОДНОМ контроллере (и по тому же маршруту)? Я думаю, ваш код контроллера не отличается, если пользователь вошел в систему или нет.

0 голосов
/ 25 июля 2011

Я делаю это так: Создайте абстрактный класс Controller_Rolebased, где в методе before () вы можете реализовать проверку ролей. А потом, например:

class Controller_Profile extends Controller_Rolebased
{
    protected $_accept_roles = array('user', 'admin'); // this array Controller_Rolebased class will use in before method.
0 голосов
/ 23 июля 2011

вам следует рассмотреть возможность использования lambdacallback-route-logic

If, позволяющее динамически изменять запрашиваемый URL-адрес и гораздо более понятное, чем запись чего-либо в bootstrap.php

...