如何使用Html标签创建Yii2 Active Form自定义消息?
我通过jQuery.activeForm
更改了此消息。
这是我正在尝试的javascript代码:
myform.js
- 包括AppAssets.php
。
操作顺序:
ajax/is-email-busy
操作中。我是通过Ajax查询在浏览器上:当用户点击邮件中的链接时,会出现弹出窗体登录
$("#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');
答案 0 :(得分:2)
您可以通过在声明规则时指定message属性来自定义规则的错误消息,如下所示,
在您的活动表单模型中
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是由-
分隔的modelname-fieldname(全部小写)
在您的情况下,应该通过id ='myform-email'并使用此引用设置正确的属性(查看广告代码以查找正确的属性)
查看Yii2呈现的代码,通过添加包含与消息相关的文本的div来管理错误消息,并在函数中隐藏/显示提供验证结果。我建议你采取同样的行为。验证失败时,请在输入中添加一条带有消息和显示的兄弟。或者您可以在表单中准备此div,然后在您的jquery验证代码中显示。
我希望这很有用