J.K*_*.A. 5 javascript php ajax jquery yii2
我有一个大的领域,即
<?= $form->field($model, 'name')->textInput(['maxlength' => 255]) ?>
Run Code Online (Sandbox Code Playgroud)
以下是我的ActiveForm选项配置:
<?php
$form = ActiveForm::begin([
//'id' => 'printerForm',
'enableClientValidation' => true,
'options' => [
'enctype' => 'multipart/form-data',
]
]);
?>
Run Code Online (Sandbox Code Playgroud)
我想为此实现客户端唯一验证。我正在为其使用唯一的验证器,但它仅适用于服务器端验证。
public function rules() {
return [
[['name'], 'unique'],
]
...
other validations
...
};
Run Code Online (Sandbox Code Playgroud)
其他验证工作正常,但唯一的客户端验证无效。
最后,我自己通过为单个输入字段启用 AJAX 验证并使用 isAjax 来完成它,以便服务器可以处理 AJAX 验证请求。
以下是代码:
鉴于:
<?= $form->field($model, 'name',['enableAjaxValidation' => true, 'validateOnChange' => false])->textInput(['maxlength' => 255]) ?>
Run Code Online (Sandbox Code Playgroud)
在控制器中:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
它会自动调用模型中定义的验证规则。
更多信息请参考:http : //www.yiiframework.com/doc-2.0/guide-input-validation.html#client-side-validation
| 归档时间: |
|
| 查看次数: |
5060 次 |
| 最近记录: |