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-侧面验证
相关文章:
- 客户端服务器REST API captcha实现
- 使用谷歌应用程序脚本将服务器端数据表返回到客户端
- 如何使用Socket.io将命令从客户端发送到服务器
- 如何轻松地将服务器端变量从Java代码转移到客户端代码
- Meteor方法在客户端返回null,在客户端运行的相同方法返回正确的值
- 从客户端获取修改后的对象,并将其与服务器上的原始对象组合
- Meteor针对唯一客户端集合的发布/订阅策略
- 如何生成一个唯一的链接,该链接将加载一个会话,其中包含客户端可用的某些文档
- 为客户端和服务器上的对象生成唯一 ID
- 跨多个客户端和服务器生成真正的全局唯一 ID
- 使用socket.io和express的多个唯一客户端
- 安全性:使用仅客户端代码创建唯一的用户连接
- Yii2实现输入字段的客户端唯一验证
- 客户端机器唯一ID
- Node.js:使用唯一的公钥认证客户端(类似于Github SSH密钥认证)
- 从chrome扩展中获得唯一的客户端id
- 在Intranet Meteor/Javascript上获取唯一的客户端IP或MAC地址
- 唯一标识向Web API发出请求的客户端的内容
- 流星应用程序:如何在不使用帐户的情况下获取唯一的会话/客户端ID
- cookie是向客户端提供来自服务器的指令来执行一些js代码的唯一方法吗?