1

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

如果您要投反对票,请解释原因。

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

编辑:我使用的是 2.3.7 版

我真的没有任何代码要显示,因为我只是想对具有许多文本区域的表单进行数据验证。由于其他问题,我的表单现在无法正常工作。如果这是唯一的问题,我可以发布所有代码,但现在它只会混淆问题。我正在寻找有关如何一起验证一组字段的描述性答案。

4

1 回答 1

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。

于 2013-07-22T21:37:05.177 回答