ajax验证cakephp 3中的特定列

时间:2017-04-24 10:59:20

标签: ajax validation cakephp cakephp-3.4

我在CakePHP 3.4中工作

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

我在更改字段值时使用Ajax调用来验证具有自定义函数的字段,例如ajaxValidateUsername(),它会手动检查所有验证规则,因此模型中指定的验证规则未被使用。 / p>

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

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

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

但是,它没有用。

1 个答案:

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