cakePHP 1.3 - $ this-> data -vs- $ this-> model-> data

时间:2014-03-26 12:13:25

标签: model http-post this cakephp-1.3

在我的控制器中,我需要验证某些输入值是否与某些db-table-records值不同 例如:

具有价格值的输入在更新时必须低于当前价格。所以我所做的是:

$this->Model->read(null, $the_id);
//and then:
if($this->data['Model']['price'] >= $this->Model->data['Model']['Price']) do_stuff();

有效。但是我担心它不是可以信任的东西,因为我发现没有文件可以考虑这种方法。

假设$this->data将始终包含提交的数据,$this->Model->data将始终保留read()调用的结果(或任何模型数据读取相关内容)是否正确)?

1 个答案:

答案 0 :(得分:2)

$ this->数据(在控制器中)表示来自浏览器的POST数据。

$ this->模型 - >数据表示保存到数据库的数据(或由控制器在模型中设置)。

如果你这样做:

$this->Model->set($this->data);
$this->Model->save();

这与:

相同
$this->Model->save($this->data);

执行后者会将数据存储在$ this-> Model->数据中。如果您通过行为或其他beforeSave()回调操作$ this-> Model->数据中的数据,它将不会复制到控制器$this->data数组。所以要小心。

所以回答你的问题:

假设$ this->数据始终包含提交的数据是否正确

是的,这是正确的

并且$ this->模型 - >数据将始终保存read()调用的结果(或任何模型数据读取相关内容)?

是 - 但您也可以将读取的模型数据直接存储到变量中:

$data = $this->Model->read(null, $id);

请注意,两个数据阵列链接,Model->数据不会复制回控制器中的$this->data。您需要在控制器中手动设置:

$this->data = $this->Model->data;

希望这有帮助。