Validation CakePHP 3.x:如何动态编辑验证规则
我不知道如何动态编辑验证规则,例如在我的控制器中 我的案例:“用户”表有“电子邮件”字段,在创建和更新时,其值必须是“唯一的”。 现在还可以,我已经创建了正确的验证规则 但现在我必须创建一个允许用户恢复密码的操作。所以有一个表单,用户在其中输入他们的电子邮件地址,这个表单必须经过验证。 之后,操作将检查是否存在该电子邮件地址,并发送电子邮件重置密码 因此:我必须使用验证规则验证表单,但在这种特殊情况下,我不需要电子邮件是“唯一的” 如何仅为一个操作更改验证规则 谢谢Validation CakePHP 3.x:如何动态编辑验证规则,validation,cakephp,cakephp-3.0,Validation,Cakephp,Cakephp 3.0,我不知道如何动态编辑验证规则,例如在我的控制器中 我的案例:“用户”表有“电子邮件”字段,在创建和更新时,其值必须是“唯一的”。 现在还可以,我已经创建了正确的验证规则 但现在我必须创建一个允许用户恢复密码的操作。所以有一个表单,用户在其中输入他们的电子邮件地址,这个表单必须经过验证。 之后,操作将检查是否存在该电子邮件地址,并发送电子邮件重置密码 因此:我必须使用验证规则验证表单,但在这种特殊情况下,我不需要电子邮件是“唯一的” 如何仅为一个操作更改验证规则 谢谢 编辑 也许是这个 clas
编辑 也许是这个
class UsersTable extends Table {
public function validationDefault(\Cake\Validation\Validator $validator) {
//Some rules...
$validator->add('email', [
'unique' => [
'message' => 'This value is already used',
'provider' => 'table',
'rule' => 'validateUnique'
]
]);
//Some rules...
return $validator;
}
public function validationOnlyCheck(\Cake\Validation\Validator $validator) {
$validator->remove('email', 'unique');
return $validator;
}
}
在我的行动中:
$user = $this->Users->newEntity($this->request->data(), [
'validate' => 'OnlyCheck'
]);
编辑之后,您的问题是CakePHP 3允许您在每个用例中使用不同/动态验证规则的预期方式
use Cake\Validation\Validator;
class UsersTable extends Table {
public function validationDefault(Validator $validator) {
//Some rules...
$validator->add('email', [
'unique' => [
'message' => 'This value is already used',
'provider' => 'table',
'rule' => 'validateUnique'
]
]);
//Some rules...
return $validator;
}
public function validationOnlyCheck(Validator $validator) {
$validator = $this->validationDefault($validator);
$validator->remove('email', 'unique');
return $validator;
}
}
然后:
$user = $this->Users->newEntity($this->request->data(), [
'validate' => 'OnlyCheck'
]);
对我来说,这听起来好像你应该使用一个单独的验证器,因为这只是一个甚至不需要保存的字段?谢谢@ndm,也许我可以这样做:对于这个特定的情况,我使用一个新的验证器来扩展原来的验证器(
UserOnlyCheckValidator extensed UserValidator
)。在新的验证器中,我只使用了该规则。你在想什么?@ndm,看我的最后一篇文章,你救了我一天;)