1

スコープがグローバルである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

}

セッションを使用せずにこれを実装するにはどうすればよいですか?

4

3 に答える 3

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
    }
...
于 2013-02-11T05:00:02.727 に答える
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); 
   }
}
于 2013-02-11T12:42:57.207 に答える
0

beforeFilter() で変数を設定すると、コントローラーのどこでも使用できます

于 2013-02-11T07:39:46.270 に答える