【问题标题】:Yii2 Active Form custom message with Html tags带有 Html 标签的 Yii2 Active Form 自定义消息
【发布时间】:2016-03-03 06:21:27
【问题描述】:

如何使用 Html 标签创建 Yii2 Active Form 自定义消息? 我通过jQuery.activeForm更改此消息。

当前消息: 所需的消息

这是我正在尝试的 javascript 代码: myform.js - 包括AppAssets.php

操作顺序:

  1. 在浏览器上:通过 jQuery 验证电子邮件
  2. 在服务器上: 验证电子邮件、验证电子邮件是否存在、是否存在不良用户列表等等...... - 这些功能位于ajax/is-email-busy 操作中。我通过 Ajax 查询来实现
  3. 在浏览器上:如果该邮箱已经注册,并且是好用户的邮箱,请更改消息
  4. 在浏览器上:当用户点击消息中的链接时,将弹出登录表单

    $("#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');

【问题讨论】:

  • 请显示当前消息/字段/表单的ecode(视图和相关模型)
  • 已解决。将jQuery('#form-ad').yiiActiveForm('updateAttribute'... 替换为jQuery('#adform-email').next().append(data.message);。此消息来自 Ajax 响应。

标签: jquery yii2 message active-form


【解决方案1】:

可以通过在声明规则时指定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 是由 - 分隔的模型名称-字段名称(全部小写) 在您的情况下,应该通过 id='myform-email' 并使用此参考设置正确的属性(查看渲染代码以找到正确的属性)

查看 Yii2 呈现的代码,错误消息是通过添加一个包含与消息相关的文本的 div 来管理的,并且函数中的隐藏/显示提供验证结果。我建议你同样的行为。当您验证失败时,将同级添加到您的消息和显示的输入中。或者你可以在你的表单中准备这个 div,然后在你的 jquery 验证代码中显示。

希望对你有用

【讨论】:

  • 我编辑了一个问题。在我的情况下,这个require 条件还不够
  • 还需要什么条件?
  • 如果您需要更多关于您的要求的评论,我已添加验证表单电子邮件类型。
  • 其中之一:检查不良用户。我上面已经描述了
  • 您可以在不使用 jquery 的情况下添加自定义验证规则。否则,您也应该更改消息。使用 jquery ...但是您对字段 id 的引用是错误的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-07
  • 2017-05-13
  • 1970-01-01
  • 2019-07-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多