0

我正在使用 CakePHP 3.4

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

我正在使用 Ajax 调用更改字段值来验证具有自定义功能的字段,例如ajaxValidateUsername()手动检查所有验证规则,因此未使用模型中指定的验证规则。

我可以使用 ajax 验证特定字段并返回Users模型中验证规则中指定的错误消息吗?

到目前为止,我已经在 `ajaxValidateUsername() 中实现了这一点,并从文档中进行了一些修改

$validator = new Validator();
$errors = $validator->errors($this->request->getData('username'));

但是,它不起作用。

4

1 回答 1

0

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

因此,您可以在 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();
于 2017-04-25T07:18:46.340 回答