Cakephp 3 - 所有模型的变量
Cakephp 3 - variable for all models
在 cakephp 2.x 中,我可以在应用程序模型 public $someVar = false;
中定义一个变量,它可以在所有模型中访问。我什至可以从任何型号的控制器中 access/set 它:例如
$this->User->someVar = true;
由于没有应用程序模型,有没有办法在蛋糕 3 中实现同样的事情。我按照这个答案设置了全局事件侦听器
所以,目的是要有一个变量,可以在那些全局侦听器、所有模型的回调中以及从控制器通过模型的对象访问 - 类似于蛋糕 2:对于应用程序模型的回调,所有模型的回调回调和分别来自控制器。
编辑: 不喜欢使用 Configure
谢谢
看来我想通了
创建一个行为并将其加载到初始化全局事件中。类似于这里的例子
这样它将在所有模型和回调中可用。在该行为中创建一个变量 public $someVar = null
。然而,直接访问行为的变量是不可能的(因为它被视为关联)
https://github.com/cakephp/cakephp/issues/9153
因此,您可以定义方法 set/get 值
// inside Behavior
public function setSomeVar($val = null) {
if ($val === null) {
return $val;
}
return $this->myVar = $val;
}
到access/modify那个变量
// 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
在 cakephp 2.x 中,我可以在应用程序模型 public $someVar = false;
中定义一个变量,它可以在所有模型中访问。我什至可以从任何型号的控制器中 access/set 它:例如
$this->User->someVar = true;
由于没有应用程序模型,有没有办法在蛋糕 3 中实现同样的事情。我按照这个答案设置了全局事件侦听器
所以,目的是要有一个变量,可以在那些全局侦听器、所有模型的回调中以及从控制器通过模型的对象访问 - 类似于蛋糕 2:对于应用程序模型的回调,所有模型的回调回调和分别来自控制器。
编辑: 不喜欢使用 Configure
谢谢
看来我想通了
创建一个行为并将其加载到初始化全局事件中。类似于这里的例子
这样它将在所有模型和回调中可用。在该行为中创建一个变量 public $someVar = null
。然而,直接访问行为的变量是不可能的(因为它被视为关联)
https://github.com/cakephp/cakephp/issues/9153
因此,您可以定义方法 set/get 值
// inside Behavior
public function setSomeVar($val = null) {
if ($val === null) {
return $val;
}
return $this->myVar = $val;
}
到access/modify那个变量
// 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