2014-07-05 25 views
0

我在MainController中將靜態變量的用戶ID保存在一個靜態變量中,但是我需要在其他控制器中訪問這個變量。當我嘗試從變量中獲取值時,即使我已經對其進行了修改,結果始終是該變量的初始值。PHP中使用CakePHP的靜態變量/方法

class MainController extends AppController { 
    //... 
    public static $loggedClienteId; 

    //functions 

    public function loginCliente(){ 
     //code... 
     self::$loggedClienteId = $cliente['Cliente']['id']; 
     var_dump(MainController::$loggedClienteId); //returns the correct value. 
     return $this->redirect(array('controller' => 'clientes', 'action' => 'index')); 
    } 
} 

因此,在另一個控制器...

包括 「MainController.php」;

class ClientesController extends AppController { 
    public $helpers = array('Html', 'Form'); 

    public function index() { 
     var_dump(MainController::$loggedClienteId); //null, althought it already has a value... 
     $this->set('clientes', $this->Cliente->find('all')); 
    } 
    //functions... 
} 

爲什麼會這樣呢?

回答

1

使用$this->Auth->user('id')獲取當前登錄用戶的ID。

您的代碼不起作用的原因是因爲一旦登錄操作的請求完成,腳本就結束了。設置變量不會在請求中持續存在。你必須爲會話保存變量。

如果它不是您需要的登錄用戶標識,您需要做的是使用SessionComponent並使用$this->Session->write('key', 'value');並在另一個請求/控制器$this->Session->read('key');中讀取它。

+0

或者,如果不需要在頁面之間保存更改的值,則可以簡單地通過配置類讀取和寫入以存儲和檢索值。不需要靜態黑客。 – mark