至少必须填写一个字段,cakephp验证 [英] at least one field must be filled, cakephp validation

查看:72
本文介绍了至少必须填写一个字段,cakephp验证的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有4个可选字段,但至少必须填写1个字段(任何字段)?

I have 4 optional fields, but at least 1 field (any field) must be filled?

有什么简单的方法吗?

推荐答案

A 自定义验证规则是必经之路!

var $validate = array(
    'myField1' => array('atLeastOne'),
    'myField2' => array('atLeastOne'),
    'myField3' => array('atLeastOne'),
    'myField4' => array('atLeastOne')
);

function atLeastOne($data) {
    return !empty($this->data[$this->name]['myField1'])
           || !empty($this->data[$this->name]['myField2'])
           || !empty($this->data[$this->name]['myField3'])
           || !empty($this->data[$this->name]['myField4']);
}

您还可以传入要比较的所有字段的额外参数,

You could also pass in extra parameters of all the fields you want to compare and make a more general function out of it.

var $validate = array(
    'myField1' => array('atLeastOne', 'myField2', 'myField3', 'myField4'),
    ...
);

// just pulled out of thin air (i.e. untested)
function atLeastOne($data) {
    $args = func_get_args();  // will contain $data, 'myField2', 'myField3', ...

    foreach ($args as $name) {
        if (is_array($name)) {
            $name = current(array_keys($name));
        }
        if (!empty($this->data[$this->name][$name])) {
            return true;
        }
    }

    return false;
}

这篇关于至少必须填写一个字段,cakephp验证的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆