是否可以一次验证一组表单textareas?我想检查一下,15个文本区域中至少有5个不是空的。关于这样做的方法的任何建议?
如果你要投票,请解释原因。
我已阅读http://book.cakephp.org/view/150/Custom-Validation-Rules#Adding-your-own-Validation-Methods-152但我不清楚如何将多个字段项组合在一起,并且只检查至少5个notEmpty个案。
编辑:我正在使用2.3.7版本
我真的没有任何代码可以显示,因为我只是想在一个包含许多textareas的表单上进行数据验证。由于其他问题,我的表格目前无效。如果这是唯一的问题,我可以发布所有代码,但现在它只会混淆问题。我正在寻找一个如何一起验证一组字段的描述性答案。
答案 0 :(得分:2)
您可以将验证规则附加到任何一个文本区域,例如
class Foo extends AppModel {
public $validate = array(
'textarea_1' => array(
'atLeast5' => array(
'rule' => array('validate5Textareas'),
'message' => 'Please put text in at least 5 of the little boxes'
)
)
);
public function validate5Textareas() {
$filledTextAreas = 0;
// adapt this to match the names/logic of the real form
for ($i = 1; $i <= 15; $i++) {
if (!empty($this->data[$this->alias]['textarea_' . $i])) {
$filledTextAreas++;
}
}
return $filledTextAreas >= 5;
}
}
$validate
数组定义了一条规则,即如果传递给要保存的数据中有validate5Textareas
,则会调用textarea_1
。
如果5个或更多文本中包含文本,则函数validate5Textareas
将返回true,否则返回false。