我想知道Cake
PHP验证规则是否可以根据另一个来验证一个字段.
我一直在读documentation about custom validation rules,但$check param只包含要验证的当前字段的值.
例如.我想仅在new_password字段不为空的情况下定义verify_password字段. (以防万一
我可以用Javascript来做,但是我想知道是否可以直接用CakePHP.
当您验证模型上的数据时,数据已经是
原文链接:https://www.f2er.com/php/131369.htmlset()
.这意味着您可以在模型的$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') ) );