微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – Yii2为输入字段实现客户端唯一验证

我有一个大的形式,即

<?= $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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐