【发布时间】:2011-04-15 10:07:48
【问题描述】:
使用 CakePHP 1.3
我在 CakePHP 中有一个相当大的模型,我想在表单页面上有一些隐藏元素,以便在保存之前(手动)比较/验证,但是在执行 saveAll()(带有验证)时,我不希望这些字段出现(主要是为了避免它们被更新)。
处理此问题的正确方法是什么?在将其从$this->data 中删除,然后再将其交给saveAll()?
【问题讨论】:
使用 CakePHP 1.3
我在 CakePHP 中有一个相当大的模型,我想在表单页面上有一些隐藏元素,以便在保存之前(手动)比较/验证,但是在执行 saveAll()(带有验证)时,我不希望这些字段出现(主要是为了避免它们被更新)。
处理此问题的正确方法是什么?在将其从$this->data 中删除,然后再将其交给saveAll()?
【问题讨论】:
$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);
【讨论】:
我通常会在saveAll() 之前使用unset()。如果您考虑一下,这是最聪明/最简单的方法。也就是说,除非您想手动命名隐藏输入字段,而不是表单助手生成的默认 data[Model][field]。
但是您必须手动访问它们并手动验证它们。
unset() 快速清晰。
【讨论】: