簡體   English   中英

Yii2為輸入字段實現客戶端唯一驗證

[英]Yii2 Implement client side unique validation for input field

我的一個領域是我的大形式,即

<?= $form->field($model, 'name')->textInput(['maxlength' => 255]) ?>

以下是我的ActiveForm選項配置:

<?php
$form = ActiveForm::begin([
            //'id' => 'printerForm',                
            'enableClientValidation' => true,
            'options' => [
                'enctype' => 'multipart/form-data',
            ]
]);
?>

我想為此實現客戶端唯一驗證。 我正在使用唯一的驗證器,但它只用於服務器端驗證。

public function rules() {
        return [
     [['name'], 'unique'],
]
...
other validations
...
};

其他驗證工作完美但獨特的客戶端驗證不起作用。

最后,我通過為單個輸入字段啟用AJAX驗證並使用isAjax自行完成,以便服務器可以處理AJAX驗證請求。

以下是代碼:

在視圖中:

<?= $form->field($model, 'name',['enableAjaxValidation' => true, 'validateOnChange' => false])->textInput(['maxlength' => 255]) ?>

在控制器中:

    if (Yii::$app->request->isAjax && $model->load(Yii::$app->request->post())) {

            $nm= $_POST['BusinessProcessProfile']['name'];
            $result = Model::find()->select(['name'])->where(['name' => "$nm"])->one();
            if ($result) {
                Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
                return \yii\widgets\ActiveForm::validate($model, 'name');
            } else {
                return false;
    }
}

它會自動調用模型中定義的驗證規則。

欲了解更多信息,請參閱: http//www.yiiframework.com/doc-2.0/guide-input-validation.html#client-side-validation

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM