我在CakePHP 3.4中工作
我有users
模型和列username
,email
,mobile
,name
和password
。 username
,email
和mobile
字段都有一些验证规则,包括所有三个都是唯一值。
我在更改字段值时使用Ajax调用来验证具有自定义函数的字段,例如ajaxValidateUsername()
,它会手动检查所有验证规则,因此模型中指定的验证规则未被使用。 / p>
我是否可以使用ajax对特定字段进行验证并返回Users
模型中验证规则中指定的错误消息?
到目前为止,我已经在`ajaxValidateUsername()中实现了这一点,并对文档进行了一些修改
$validator = new Validator();
$errors = $validator->errors($this->request->getData('username'));
但是,它没有用。
答案 0 :(得分:0)
在CakePHP 3.x中,您可以创建不同的验证集,并在修补实体时使用它们。请参阅docs。
因此,您可以在Controller中创建一个仅验证某些属性的方法。
class UsersTable extends Table
{
public function validationUsername($validator)
{
$validator
->add('username', 'notEmpty', [
'rule' => 'notEmpty',
'message' => __('Please specify a username.'),
])
->add(…);
return $validator;
}
}
在控制器中使用此验证方法。
$entity = $this->Users->newEntity(
$this->request->getData(),
['validate' => 'username']
);
$success = !$entity->errors();