Yii2, Пользовательское сообщение проверки подлинности с именами атрибутов


В форме входа в систему мне нужно иметь значок 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'. Но что мне нужно, так это вместо того, чтобы определять отдельно для каждого поля, нужно определить общее для всех полей.

Author: Siva.G ツ, 2015-09-09

2 answers

Вы можете использовать {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}

 21
Author: Alfred_P, 2018-06-08 10:24:37

Добавьте это в свою форму:

_form.php

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

errorOptions кодировка по умолчанию имеет значение true, поэтому ваш html-код кодируется как сообщение, поэтому он не будет работать, пока вы не установите 'encode' => false.

 2
Author: Insane Skull, 2015-09-14 11:15:25