CakePHP的$ this->数据

时间:2010-07-11 17:46:20

标签: cakephp parameters methods

我有一个应用程序,在每个视图中都加载了表单。我已经非常熟悉CakePHP的数组语法,并且我经常使用$ this->数据参数。

我爱上了瘦小的控制器和胖子模型,所以我尽可能多地在模型中加入代码。除非我做一些复杂的事情,否则我的大部分控制器方法都是这样的:

function some_action() {
    $this->set('data', $this->Model->some_action($this->data));
}

然后,在我的模型中,我有一个带有一个参数的方法:

function some_action($this_data = NULL) {
    // do some stuff, manipulate the data etc.
    $this->create();
    if ($this->save($this_data)) {
        // return success message here
    }
}

我过度简化了,但你明白了。

我的问题:我总是将$ this->数据发送到我的模型并使用变量$ this_data捕获它。但是,我想知道这是否是一步太多了?模型是否继承了$ this->数据?如果是这样,我可以将上述控制器方法更改为:

function some_action() {
    $this->set('data', $this->Model->some_action());
} 

然后在我的模型中操作$ this->数据而不是我一直在使用的$ this_data变量?什么是最佳做法?

2 个答案:

答案 0 :(得分:1)

好主意,但不幸的是你必须传递$this->data作为参数,因为蛋糕中的控制器和模型是从不同的父对象扩展的。所以$this->data在它们中有不同的含义。在控制器中,{ {1}}属性用于获取POST数据,而它是模型获取数据in model的容器。我建议你阅读源代码 $data

app/cake/lib/controller/controller.php

这会让你更清楚。

答案 1 :(得分:1)

但你可以做的是:

在您的控制器中

$this->Model->create($this->data);
$this->set('data', $this->Model->some_action());

这样,您可以使用Model :: some_action();中的$ this->数据访问模型数据;