2013-04-29 72 views

回答

2

首先,構建主控制器,其他擴展它們。兩種方法非常有用:before()和after()。通過覆蓋並鏈接它們(super::),你將能夠做到這一點。

Api Controller

+0

但是,我有做(例如上)此代碼: '$ _SESSION [ 'lastvisit'] =時間(); echo'test';' 在我的項目中的每個頁面(控制器)上。 在例如: 控制器歡迎 '公共函數action_index() 回波 '做測試';' 將輸出'testdo test' – Marcin 2013-04-29 15:35:17

+0

基地控制器可能是抽象的太。您可以加載公共用戶對象,使用會話參數來播放,或者如果您將佈局擴展到Controller_Template,則可以準備佈局 – devside 2013-05-02 13:54:58

1

由於nopnop77說,你可以創建延伸的Kohana默認的控制器,然後再擴展應用程序中的這個基地控制器基本控制器。例如:

創建一個基本控制器文件application/classes/Controller/Base.php

<?php defined('SYSPATH') OR die('No Direct Script Access'); 

class Controller_Base extends Kohana_Controller 
{ 

    protected $session = NULL; 

    public function before() 
    { 
     parent::before(); 

     // start the session 
     $this->session = Session::instance(); 
    } 
} 

然後延伸的基類的任何類訪問在基類的變量/方法。例如:登錄控制器例如application/classes/Controller/Login.php延伸的基類:

<?php defined('SYSPATH') OR die('No Direct Script Access'); 

class Controller_Login extends Controller_Base 
{ 

    public function action_index() 
    { 
     // you can access the session variable here 
     echo $this->session; 
    } 
} 
相關問題