CakePHP 3.x:如何即时编辑验证规则
CakePHP 3.x: how to edit a validation rule on the fly
我不知道如何即时编辑验证规则,例如在我的控制器中。
我的情况:"users"table有"email"字段,创建和更新时,其值必须为"unique"。
现在没关系,我已经创建了正确的验证规则。
但现在我必须创建一个允许用户恢复密码的操作。所以有一个表单,用户可以在其中输入他们的电子邮件地址,并且必须验证此表单。
之后,该操作会检查是否存在该电子邮件地址并发送电子邮件以重置密码。
所以:我必须使用验证规则验证表单,但在这种特殊情况下,我不需要电子邮件 "unique"。
如何只更改一个动作的验证规则?
谢谢。
编辑
也许是这个?
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 允许您对每个用例使用 different/dynamic 验证规则的预期方式。
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'
]);
我不知道如何即时编辑验证规则,例如在我的控制器中。
我的情况:"users"table有"email"字段,创建和更新时,其值必须为"unique"。 现在没关系,我已经创建了正确的验证规则。
但现在我必须创建一个允许用户恢复密码的操作。所以有一个表单,用户可以在其中输入他们的电子邮件地址,并且必须验证此表单。 之后,该操作会检查是否存在该电子邮件地址并发送电子邮件以重置密码。
所以:我必须使用验证规则验证表单,但在这种特殊情况下,我不需要电子邮件 "unique"。
如何只更改一个动作的验证规则?
谢谢。
编辑
也许是这个?
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 允许您对每个用例使用 different/dynamic 验证规则的预期方式。
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'
]);