ajax 验证 cakephp 3 中的特定列

ajax validate specific column in cakephp 3

我正在使用 CakePHP 3.4

我有一个 users 模型和包含 usernameemailmobilenamepassword 的列。 usernameemailmobile 字段有一些验证规则,包括所有三个都是唯一值。

我正在使用 Ajax 调用更改字段值来验证带有自定义函数的字段,例如 ajaxValidateUsername(),它会手动检查所有验证规则,从而检查模型中指定的验证规则未被利用。

我可以使用 ajax 和 return 模型验证规则中指定的错误消息对特定字段进行验证吗?

到目前为止,我已经在 `ajaxValidateUsername() 中实现了这个,并根据文档

进行了一些修改
$validator = new Validator();
$errors = $validator->errors($this->request->getData('username'));

但是,它不起作用。

在 CakePHP 3.x 中,您可以创建不同的验证集并在修补实体时使用它们。见 docs.

因此您可以在您的控制器中创建一个只验证某些属性的方法。

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();