2016-07-22 3 views
1

cakephp 2.xでは、私はアプリモデルpublic $someVar = false;の変数を定義でき、すべてのモデルでアクセス可能になりました。私はどんなモデルのためのコントローラからでもアクセス/設定することができます。Cakephp 3 - すべてのモデルの変数

$this->User->someVar = true; 

何のアプリモデルが存在しないので、私は、

Cakephp 3 callbacks, behaviors for all models

だから、この答えのように設定するグローバルイベントリスナーを持っているケーキ3で同じことを達成するために、どのような方法がありますそれらのグローバルリスナー、すべてのモデルのコールバック、コントローラーからモデルのオブジェクトまでアクセス可能な変数を持つことです。ケーキ2と同様に、アプリケーションモデルのコールバック、すべてのモデルのコールバック、およびコントローラーからそれぞれです。

編集:私は

が行動を作成および初期化グローバルイベントでそれをロードし、それを考え出したように見えますConfigure

おかげ

答えて

2

を使用することを好むではないでしょう。ここの例に似ています Cakephp 3 callbacks, behaviors for all models

このようにして、すべてのモデルとコールバックで利用できます。その振る舞いで変数を作成してくださいpublic $someVar = null。しかし、あなたが設定するためのメソッドを定義することができ、 https://github.com/cakephp/cakephp/issues/9153

ので(それが関連として扱われるように)行動の変数はできません直接アクセス/ /アクセスするための値

// inside Behavior 
public function setSomeVar($val = null) { 
    if ($val === null) { 
     return $val; 
    } 

    return $this->myVar = $val; 
} 

を取得し、その変数を変更

// inside callbacks/event listeners 
$event->subject()->setSomeVar();  // to get 
$event->subject()->setSomeVar('smth'); // to set 

// from controller 
$this->Users->setSomeVar();   // to get 
$this->Users->setSomeVar('smth'); // to set 
関連する問題