Kohana基于角色的多个默认控制器

时间:2011-07-23 15:53:26

标签: kohana kohana-3

我希望在应用程序的根网址上为不同角色的用户显示完全不同的布局。我目前使用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',));
}

在Kohana实现这一目标的最佳做法是什么?可以在bootstrap.php中为不同的角色添加更多行。

由于

3 个答案:

答案 0 :(得分:0)

您应该考虑使用lambdacallback-route-logic

如果允许您动态修改请求的URL,并且比在bootstrap.php中编写内容更清晰

答案 1 :(得分:0)

为什么不在一个控制器中更改基本模板(并使用相同的路径)?我认为,如果用户登录或未登录,您的控制器代码不会有所不同。

答案 2 :(得分:0)

我是这样做的: 创建一个抽象类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.