唯一验证器的消息不会出现在yii2中

时间:2016-07-08 06:41:47

标签: php yii2 yii2-validation

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

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

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

那么如何在客户端使独特的规则工作?

我错过了什么?请帮忙

2 个答案:

答案 0 :(得分:1)

唯一的方法是enableAjaxValidation在客户端

Here is doc about it

  

要为单个输入字段启用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);
}

答案 1 :(得分:0)

不幸的是,这必须来自 DB 的 ActiveRecordSet 在更新时它意识到该字段是唯一的。最简单的方法是检查 ($model->save()) 是否为真,否则返回/呈现表单,您将看到一个框架消息,表明特定字段已被占用。