带有 Html 标签的 Yii2 活动表单自定义消息
Yii2 Active Form custom message with Html tags
如何使用 Html 标签创建 Yii2 活动表单自定义消息?
我通过 jQuery.activeForm
.
更改此消息
当前消息:
想要的消息
这是我正在尝试的 javascript 代码:
myform.js
- 包含在 AppAssets.php
.
运算顺序:
- 在浏览器上: 通过 jQuery
验证电子邮件
- 在服务器上: 验证电子邮件、验证电子邮件是否存在、是否存在不良用户列表等... - 这些功能位于
ajax/is-email-busy
操作中。我通过 Ajax 查询
- 在浏览器上:如果此邮箱已经注册并且是好用户的邮箱,请更改消息
在浏览器上: 当用户点击消息中的 link 时,将出现用于登录的弹出窗体
$("#form-ad").on("afterValidateAttribute", function(event, attribute, messages) {
var hasError = messages.length !== 0;
var field = $(attribute.container);
var input = field.find(attribute.input);
if(attribute.name == 'email' && !hasError) {
var form_data = new FormData();
form_data.append('email', input.val());
$.ajax({
url: 'ajax/is-email-busy',
dataType: 'json',
cache: false,
contentType: false,
processData: false,
data: form_data,
type: 'post',
success: function(data) {
console.log(data);
jQuery('#form-ad')
.yiiActiveForm(
'updateAttribute',
'adform-email',
['This email is busy. If it\'s your email <a href="#">click here</a>']);
}
});
}
});
在视图文件中:
echo $form->field($model, 'email')->input('email');
你可以在声明规则时指定消息属性来自定义规则的错误消息,如下所示,
在您的活动表单模型中
public function rules()
{
return [
['email', 'required',
'message' => 'This email is busy. If it\'s your email
<a href="#">click here</a>'
],
['email', 'email'],
];
}
否则你不想在 Yii 中添加自定义验证规则而你想使用 jquery 你应该参考正确的字段 id
通常字段 id 是模型名称-字段名称(全部小写),由 -
分隔
在您的情况下,应该通过 id='myform-email' 并使用此参考设置正确的属性(查看渲染代码以找到正确的属性)
查看 Yii2 呈现的代码,通过添加包含与消息相关的文本的 div 来管理错误消息,并在函数中添加 hidden/display 提供验证结果。我建议你同样的行为。当您验证失败时,将兄弟添加到带有您的消息和显示的输入中。或者您可以在表单中准备此 div,然后显示在您的 jquery 验证码中。
希望有用
如何使用 Html 标签创建 Yii2 活动表单自定义消息?
我通过 jQuery.activeForm
.
当前消息:
这是我正在尝试的 javascript 代码:
myform.js
- 包含在 AppAssets.php
.
运算顺序:
- 在浏览器上: 通过 jQuery 验证电子邮件
- 在服务器上: 验证电子邮件、验证电子邮件是否存在、是否存在不良用户列表等... - 这些功能位于
ajax/is-email-busy
操作中。我通过 Ajax 查询 - 在浏览器上:如果此邮箱已经注册并且是好用户的邮箱,请更改消息
在浏览器上: 当用户点击消息中的 link 时,将出现用于登录的弹出窗体
$("#form-ad").on("afterValidateAttribute", function(event, attribute, messages) { var hasError = messages.length !== 0; var field = $(attribute.container); var input = field.find(attribute.input); if(attribute.name == 'email' && !hasError) { var form_data = new FormData(); form_data.append('email', input.val()); $.ajax({ url: 'ajax/is-email-busy', dataType: 'json', cache: false, contentType: false, processData: false, data: form_data, type: 'post', success: function(data) { console.log(data); jQuery('#form-ad') .yiiActiveForm( 'updateAttribute', 'adform-email', ['This email is busy. If it\'s your email <a href="#">click here</a>']); } }); } });
在视图文件中:
echo $form->field($model, 'email')->input('email');
你可以在声明规则时指定消息属性来自定义规则的错误消息,如下所示,
在您的活动表单模型中
public function rules()
{
return [
['email', 'required',
'message' => 'This email is busy. If it\'s your email
<a href="#">click here</a>'
],
['email', 'email'],
];
}
否则你不想在 Yii 中添加自定义验证规则而你想使用 jquery 你应该参考正确的字段 id
通常字段 id 是模型名称-字段名称(全部小写),由 -
分隔
在您的情况下,应该通过 id='myform-email' 并使用此参考设置正确的属性(查看渲染代码以找到正确的属性)
查看 Yii2 呈现的代码,通过添加包含与消息相关的文本的 div 来管理错误消息,并在函数中添加 hidden/display 提供验证结果。我建议你同样的行为。当您验证失败时,将兄弟添加到带有您的消息和显示的输入中。或者您可以在表单中准备此 div,然后显示在您的 jquery 验证码中。
希望有用