2013-02-11 111 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); 
    } 
} 
相关问题