CakePHP验证取决于其他字段

我想知道Cake PHP验证规则是否可以根据另一个来验证一个字段.

我一直在读documentation about custom validation rules,但$check param只包含要验证的当前字段的值.

例如.我想仅在new_password字段不为空的情况下定义verify_password字段. (以防万一

我可以用Javascript来做,但是我想知道是否可以直接用CakePHP.

当您验证模型上的数据时,数据已经是 set().这意味着您可以在模型的$data属性上访问它.下面的示例检查我们验证的字段,以确保它与验证规则中定义的其他字段(例如密码确认字段)相同.

验证规则将如下所示:

var $validate = array(
    'password' => array(            
        'minLength' => array(
            'rule' => array('minLength',6),'message' => 'Your password must be at least 6 characters long.'
        ),'notempty' => array(
            'rule' => 'notEmpty','message' => 'Please fill in the required field.'
        )
    ),'confirm_password' => array(
        'identical' => array(
            'rule' => array('identicalFieldValues','password'),'message' => 'Password confirmation does not match password.'
        )
    )
);

我们的验证函数然后查看传递的字段的数据(confirm_password),并将其与规则中定义的(传递给$compareFiled)的数据进行比较.

function identicalFieldValues(&$data,$compareField) {
    // $data array is passed using the form field name as the key
    // so let's just get the field name to compare
    $value = array_values($data);
    $comparewithvalue = $value[0];
    return ($this->data[$this->name][$compareField] == $comparewithvalue);
}

这是一个简单的例子,但您可以使用$this->数据来执行任何您想要的操作.

您的帖子中的示例可能如下所示:

function requireNotEmpty(&$data,$shouldNotBeEmpty) {
    return !empty($this->data[$this->name][$shouldNotBeEmpty]);
}

规则:

var $validate = array(
  'verify_password' => array(
    'rule' => array('requireNotEmpty','password')
  )
);

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...