我有一个应用程序,在每个视图中都加载了表单。我已经非常熟悉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变量?什么是最佳做法?
答案 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->数据访问模型数据;