cakephp表单验证将多个textareas计为一组

时间:2013-07-22 19:07:48

标签: forms validation cakephp

是否可以一次验证一组表单textareas?我想检查一下,15个文本区域中至少有5个不是空的。关于这样做的方法的任何建议?

如果你要投票,请解释原因。

我已阅读http://book.cakephp.org/view/150/Custom-Validation-Rules#Adding-your-own-Validation-Methods-152但我不清楚如何将多个字段项组合在一起,并且只检查至少5个notEmpty个案。

编辑:我正在使用2.3.7版本

我真的没有任何代码可以显示,因为我只是想在一个包含许多textareas的表单上进行数据验证。由于其他问题,我的表格目前无效。如果这是唯一的问题,我可以发布所有代码,但现在它只会混淆问题。我正在寻找一个如何一起验证一组字段的描述性答案。

1 个答案:

答案 0 :(得分:2)

将验证规则附加到一个 textarea

您可以将验证规则附加到任何一个文本区域,例如

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。