使用CakePHP 1.3
我在CakePHP中有一个相当大的模型,我希望在表单页面上有一些隐藏的元素,以便在保存之前进行(手动)比较/验证,但是在执行saveAll()
时(通过验证) ,我不希望这些字段存在(主要是为了避免它们被更新)。
处理此问题的正确方法是什么?从$this->data
移除它们,然后再将其移至saveAll()
?
答案 0 :(得分:3)
我通常会在unset()
之前使用saveAll()
。如果你考虑一下,这是最简单/最简单的方法。也就是说,除非您想手动命名隐藏的输入字段,而不是由表单帮助程序生成的默认data[Model][field]
。
但是你必须手动访问它们并手动验证它们。
unset()
快速而清晰。
答案 1 :(得分:3)
$this->Model->saveAll($data, array('fieldlist' => array('fields', 'to', 'save')));
$fields = array_keys($this->Model->_schema);
$fieldsNotToSave = array('field1', 'field2');
$fieldsToSave = array_diff($fields, $fieldsNotToSave);