CakePHP 3 - 如何添加到类似数组

时间:2016-04-13 17:49:02

标签: php cakephp cakephp-3.0

我正在构建一个返回JSON响应的RESTful API。在控制器中设置视图变量时,有没有办法显式设置已经存在的数组变量的元素?

例如,假设AppController设置了一个视图var,它是一个数组:

$this->set('myArray', array('foo' => 'bar'));

然后在子控制器MyController中我要添加到该数组。类似的东西:

$this->set('myArray.add', 'New Element');

以便视图的JSON响应为:

{
    "myArray": {
        "foo": "bar",
        "add": "New Element"
    }
}

我猜测它可以通过将数组存储为AppController类的普通PHP属性,然后在最终执行{{1}之前添加到子控制器中的数组 - 以环形方式完成一旦在控制器动作结束时。

但我很好奇是否有办法通过$this->set()方法单独执行此操作。

1 个答案:

答案 0 :(得分:2)

  

但我很好奇是否有办法通过Controller :: set()方法单独执行此操作。

没有。在这种情况下,阅读代码总是一个好主意。这本来可以回答你的问题。

请参阅http://api.cakephp.org/3.2/source-class-Cake.View.ViewVarsTrait.html#129

实现类似setMerge()的方法,它可以执行您想要的操作,或者直接将array_merge()数据放入控制器的viewVars属性中。