我有这个Model / Table / UsersProfilesTable.php,其中我已经指定了所有错误消息和buildRules。
我的目的是在尝试保存数据时列出控制器中的所有验证错误。
下面提到了代码。
// Model/Table/UsersProfilesTable.php
class UserProfilesTable extends Table{
public function validationDefault(Validator $validator){
$validator = new Validator();
$validator
->notEmpty("first_name","First name cannot be empty.")
->requirePresence("first_name")
.......
->notEmpty("email", "Email cannot be empty.")
->requirePresence("email")
->add( "email", "email",[
"rule" => ["email", true],
"message" => "Enter a valid e-mail."
]);
return $validator;
}
public function buildRules(RulesChecker $rules){
$rules->add($rules->isUnique(['email'], 'Email should be unique'));
return $rules;
}
//UsersController.php
$user = $this->Users->patchEntity($user, $this->request->data);
if($this->Users->save($user)){
// Success msg
}
if($user->errors()){
// This shows all the error messages except the one specified in the buildRules for unique email.
pr($user->errors());
}
任何人都可以想出一种方法,我可以列出所有验证错误,包括buildRules方法中指定的消息吗?
任何帮助将不胜感激。提前谢谢!
和平!的xD
答案 0 :(得分:3)
请记住,验证是一个两阶段过程,首先检查所有验证规则(在编组期间 - 即patchEntity()
),只有当它们通过时才使用buildRules中的规则。这意味着在标准验证规则全部通过之前,不会运行唯一的电子邮件规则。
如果您需要有关电子邮件唯一性的即时反馈,您还可以在验证程序中为电子邮件唯一性添加验证规则。
答案 1 :(得分:0)
即使验证失败,您也可以使用它来强制Cake检查规则:
$this->Users->checkRules($user);