2014-03-26 41 views
2

在我的控制器中,我需要验证某些输入值是否与某些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()调用(或任何模型数据读取相关内容)的结果是否正确?

+0

似乎是这样。任何人都可以验证它吗? – yossi

回答

2

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

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

如果你做的事:

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

这是一样的:

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

否则后者将存储在$这个 - >型号 - >数据的数据。如果要通过行为或其他回调操作$ this-> Model-> data中的数据,它将不会复制到控制器$this->data阵列。所以要小心。

响应你的问题

所以:

难道是正确的假设,这 - $>数据将始终包含提交的数据

是的,这是正确的

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

是 - 但你也可以直接读取模型数据存储到一个变量:

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

要知道,这两个数据数组联系,型号 - >数据不会复制回控制器中的$this->data。你需要手动设置你的控制器:

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

希望这会有所帮助。