加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

CakePHP验证取决于其他字段

发布时间:2020-12-13 17:34:22 所属栏目:PHP教程 来源:网络整理
导读:我想知道Cake PHP验证规则是否可以根据另一个来验证一个字段. 我一直在读documentation about custom validation rules,但$check param只包含要验证的当前字段的值. 例如.我想仅在new_password字段不为空的情况下定义verify_password字段. (以防万一 我可以
我想知道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')
  )
);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读