2016-07-08 63 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