12

在登录表单中,我需要glyphicon-remove在每条验证消息的末尾都有一个带有相应字段名称的图标。所以我在Login model.

['email', 'required', 'message' => 'Email cannot be blank<span class="glyphicon glyphicon-remove"></span>'],
['password', 'required', 'message' => 'Password cannot be blank<span class="glyphicon glyphicon-remove"></span>']

除了上面的代码之外,是否有任何可能的方法来使用类似下面的代码。

[['email', 'password'], 'required', 'message' => $attribute.' cannot be blank<span class="glyphicon glyphicon-remove"></span>']

上述代码的思想是为每个字段动态获取对应的字段名称。

请只做那些需要的。谢谢。

更新

我在这里使用的HTML代码(<span class="glyphicon glyphicon-remove"></span>)是通过使用正确输出的encode=>'false'。但是我需要的不是为每个字段单独定义,而是需要为所有字段共同定义。

4

2 回答 2

29

您可以{attribute}在消息中使用来引用属性名称。

public function rules()
  {
    return [
      [
        ['email','password', 'password_verify', 'alias', 'fullname'],
        'required',
        'message' => '{attribute} is required'
      ],
      [['email'], 'email'],
      [['fullname'], 'string', 'max' => 50],
      [['password', 'password_verify'], 'string', 'min' => 8, 'max' => 20],
      [['password_verify'], 'compare', 'compareAttribute' => 'password'],
  ];
}

您还可以使用验证器中设置的其他选项,例如{min}{requiredValue}

于 2015-09-09T11:32:16.367 回答
2

在您的表单中添加:

_form.php

<?php
   $form = ActiveForm::begin([
            'options' => ['enctype' => 'multipart/form-data'],
            'fieldConfig' => ['errorOptions' => ['encode' => false, 'class' => 'help-block']] 
   ]);
?>

errorOptions默认编码为 true,因此您的 html 代码被编码为消息,因此在您设置'encode' => false.

于 2015-09-09T11:19:54.793 回答