yii2 中没有出现唯一验证器的消息

问题描述 投票:0回答:2

我有以下规则,电子邮件在模式中是唯一的

   [['email'], 'unique'],

不使用ajax提交表单。 问题是我收到了除唯一规则之外的所有规则验证消息。

那么如何让独特的规则在客户端发挥作用呢?

我错过了什么?请帮忙

php yii2 yii2-validation
2个回答
3
投票

唯一的方法是在客户端

enableAjaxValidation

这是有关它的文档

要为单个输入字段启用 AJAX 验证,请配置 该字段的 enableAjaxValidation 属性为 true 并指定 唯一的表单 ID:

use yii\widgets\ActiveForm;

$form = ActiveForm::begin([
    'id' => 'registration-form',
]);

echo $form->field($model, 'username', ['enableAjaxValidation' => true]);

// ...

ActiveForm::end();

您还需要准备服务器以便它可以处理 AJAX 验证请求。这可以通过如下代码片段来实现 控制器操作如下:

if (Yii::$app->request->isAjax && $model->load(Yii::$app->request->post())) {
    Yii::$app->response->format = Response::FORMAT_JSON;
    return ActiveForm::validate($model);
}

0
投票

不幸的是,这必须来自DB 的 ActiveRecordSet 在更新时它意识到该字段是唯一的。最简单的方法是检查

($model->save())
是否为 true,否则返回/渲染回表单,您将看到一条框架消息,表明特定字段已被占用。

© www.soinside.com 2019 - 2024. All rights reserved.