2013-02-11 106 views
1

我希望訪問一個全局範圍的cakephp變量 - 也就是說它在同一個控制器中,但功能不同。 代碼:cakephp:在同一個控制器中訪問一個變量,但功能不同

homeController.php

public function opauth_complete() { 
    //global $facebook_data; 
    $this->facebook_data = $this->data; 
    debug($this->facebook_data); // returns data 
    $this->redirect(array('controller' => 'home', 
          'action' => 'user_home')); 
} 
public function user_home() 
{ 
    // i wish to use $facebook_data here. 
debug($this->facebook_data); // returns null 

} 

如何實現這一點沒有使用會話?

回答

2

,你可以將它存儲在會話

class HomeController extends Controller {   

    public function opauth_complete() { 
     //assign the value 
     $this->Session->write("facebook_data", $this->data); 
    debug($this->facebook_data); // returns data 
     $this->redirect(array('controller' => 'home', 
          'action' => 'user_home')); 
    } 
    public function user_home() { 
     //read from session 
    debug($this->Session->read("facebook_data")); // returns data 
    } 
... 
+0

試了一下,還是一樣,它返回null .. – z22 2013-02-11 05:02:41

+0

有沒有辦法做到這一點沒有會話? – z22 2013-02-11 05:04:07

+1

@ z22好吧,我不這麼認爲,因爲你正在重定向到其他函數,重定向後你的局部變量($ this-> facebook_data)中的數據將不可用。 – 2013-02-11 05:05:28

0

設置變量beforeFilter(),並且可以在控制器到處使用

+0

這將過期...不是嗎? – 2013-02-11 12:39:56

2
App::uses('AppController', 'Controller'); 

class UsersController extends AppController { 

    private $FbData = array(); 

    public function opauth_complete() { 
     $this->FbData = $this->data; 
    } 

    public function user_home(){ 
     debug($this->FbData); 
    } 
} 
相關問題