在cakephp 2.x中,我可以在app模型public $someVar = false;
中定义一个变量,并且可以在所有模型中访问它。我甚至可以从任何型号的控制器访问/设置它:例如
$this->User->someVar = true;
由于没有应用程序模型,有没有办法在蛋糕3中实现相同的功能。我在此答案中设置了全局事件监听器
Cakephp 3 callbacks, behaviors for all models
因此,目的是拥有一个变量,可以在那些全局侦听器,所有模型的回调以及从控制器到模型的对象中访问 - 类似于cake 2:对于app model的回调,所有模型的回调和来自控制器。
编辑不愿意使用Configure
由于
答案 0 :(得分: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