2016-07-08 64 views
0

未来我有以下电子邮件规则是唯一的模式消息独特的验证不yii2

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

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

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

我错过了什么?请帮助

+0

没有AJAX验证有没有办法在客户端 –

+0

@СеменихинМаксим检查独特的规则,但我不节约使用Ajax形式.. 我该怎么办 ?请建议 – alwaysLearn

+0

试试这个'['email','unique','targetClass'=>'\ frontend \ models \ User','message'=>'此邮件地址已被占用。'], – vishuB

回答

1

的唯一方法是enableAjaxValidation在客户端

Here is doc about it

要启用一个输入字段AJAX验证,该字段的 enableAjaxValidation属性配置为真实,指定一个 唯一表单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

When我添加这样的代码..客户端验证停止工作。提交它将我带到服务器没有任何验证 – alwaysLearn

+0

提供完整的PHP js html代码,我们将帮助你 –

+0

您必须在使用ajaxValidation之前覆盖'clientValidateAttribute'函数。 链接:[http://www.yiiframework.com/doc-2.0/guide-input-validation.html#deferred-validation](http://www.yiiframework.com/doc-2.0/guide-input-validation的.html#延期确认) – ThanhPV