cakephp:在同一个控制器中访问一个变量,但功能不同
问题描述:
我希望访问一个全局范围的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
}
如何实现这一点没有使用会话?
答
,你可以将它存储在会话
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
}
...
答
设置变量beforeFilter(),并且可以在控制器到处使用
+0
这将过期...不是吗? – 2013-02-11 12:39:56
答
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);
}
}
试了一下,还是一样,它返回null .. – z22 2013-02-11 05:02:41
有没有办法做到这一点没有会话? – z22 2013-02-11 05:04:07
@ z22好吧,我不这么认为,因为你正在重定向到其他函数,重定向后你的局部变量($ this-> facebook_data)中的数据将不可用。 – 2013-02-11 05:05:28