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

В форме входа мне нужно иметь значок glyphicon-remove в конце каждого сообщения проверки с соответствующими именами полей. Поэтому я использовал код ниже в Login model.

['email', 'required', 'message' => 'Email cannot be blank'],
['password', 'required', 'message' => 'Password cannot be blank']

Вместо этого выше кода существует ли какой-либо возможный способ использовать что-то вроде приведенного ниже кода.

[['email', 'password'], 'required', 'message' => $attribute.' cannot be blank']

Идея приведенного выше кода - получить динамическое имя поля для каждого поля.

Пожалуйста, сделайте необходимое. Спасибо.

Обновление

Код HTML (), который я использовал, корректно выводится с помощью encode=>'false'. Но мне нужно вместо определения отдельно для каждого поля, нужно определять обычно для всех полей.

2 ответа

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


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

_form.php

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

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

licensed under cc by-sa 3.0 with attribution.