2011-07-23 39 views
1

我想爲我的應用程序的根網址上的不同角色的用戶顯示完全不同的佈局。我目前正在使用bootstrap.php中的以下行來實現此目的。Kohana基於角色的多個默認控制器

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中爲不同角色添加更多行。

感謝

回答

0

你應該考慮使用lambdacallback-route-logic

如果允許你動態和更清潔的比bootstrap.php中寫的東西修改請求的URL

+0

謝謝Kowser,你能解釋一下,我怎麼把上面的邏輯/代碼轉換成lambdacallback邏輯? –

0

你爲什麼不改變基本的模板在一個控制器(並使用相同的路線)?我認爲,如果用戶登錄或不登錄,您的控制器代碼不會有所不同。

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.