ajax验证cakephp 3中的特定列
我在CakePHP3.4中工作 我有一个ajax验证cakephp 3中的特定列,ajax,validation,cakephp,cakephp-3.4,Ajax,Validation,Cakephp,Cakephp 3.4,我在CakePHP3.4中工作 我有一个用户模型,列中有用户名,电子邮件,手机,姓名和密码username、email和mobile字段具有一些验证规则,包括所有三个都是唯一值 我正在使用Ajax调用更改字段值来使用自定义函数(如ajaxValidateUsername())验证字段,该函数在操作中手动检查所有验证规则,因此没有使用模型中指定的验证规则 我是否可以使用ajax对特定字段进行验证,并按照用户模型中的验证规则返回错误消息? 到目前为止,我已经在“ajaxValidateUsernam
用户
模型,列中有用户名
,电子邮件
,手机
,姓名
和密码
username
、email
和mobile
字段具有一些验证规则,包括所有三个都是唯一值
我正在使用Ajax调用更改字段值来使用自定义函数(如ajaxValidateUsername()
)验证字段,该函数在操作中手动检查所有验证规则,因此没有使用模型中指定的验证规则
我是否可以使用ajax对特定字段进行验证,并按照用户
模型中的验证规则返回错误消息?
到目前为止,我已经在“ajaxValidateUsername()中实现了这一点,并对文档进行了一些修改
$validator = new Validator();
$errors = $validator->errors($this->request->getData('username'));
但是,它不起作用。在CakePHP 3.x中,您可以创建不同的验证集,并在修补实体时使用它们。看 因此,您可以在控制器中创建一个只验证某些属性的方法
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();
为什么不进行正常的修补并返回实体的错误呢?更干净,与当前的蛋糕方式保持一致。我认为这将验证所有设置为
notEmpty
的字段,因为其余字段可能是空的,我只想验证一个字段CakePHP 3.x允许您动态创建验证对象。如果您只需要验证1个字段,我会将ajax指向一个为该字段构建验证器并根据规则验证数据的操作@AnujTBE您是否向新实例化的验证对象添加了任何规则?例如$validator->notEmpty('username','Please fill this field')
在调用errors()
方法之前?我是否需要在controller中重新实例化它?我已经在UsersTable.php
中添加了验证规则,只想为特定的专栏调用它们,正如我一直在说的:)感谢您详细介绍。但您甚至不需要多个验证器。打补丁时使用`'fields'=>['username']'就足够了:)@mark你能举例说明如何使用'fields'=>['username']
?只需$this->Users->patchEntity($user,['fields'=>…])代码>-不需要其他任何东西。