【问题标题】:Cakephp 3 - variable for all modelsCakephp 3 - 所有模型的变量
【发布时间】:2016-07-22 15:19:39
【问题描述】:

在 cakephp 2.x 中,我可以在应用模型 public $someVar = false; 中定义一个变量,它可以在所有模型中访问。我什至可以从任何模型的控制器访问/设置它:例如

$this->User->someVar = true;

由于没有应用程序模型,有什么方法可以在蛋糕 3 中实现相同的功能。我在这个答案中设置了全局事件侦听器

Cakephp 3 callbacks, behaviors for all models

因此,目的是有一个变量,可以在那些全局侦听器、所有模型的回调以及从控制器到模型的对象中访问 - 类似于蛋糕 2:对于应用程序模型的回调,所有模型的回调和分别来自控制器。

edit:不喜欢使用Configure

谢谢

【问题讨论】:

    标签: cakephp cakephp-3.x


    【解决方案1】:

    看来我想通了

    创建一个行为并将其加载到初始化全局事件中。类似于此处的示例 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-13
      • 1970-01-01
      相关资源
      最近更新 更多