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'
. Но что мне нужно, так это вместо того, чтобы определять отдельно для каждого поля, нужно определить общее для всех полей.
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}
Добавьте это в свою форму:
_form.php
<?php
$form = ActiveForm::begin([
'options' => ['enctype' => 'multipart/form-data'],
'fieldConfig' => ['errorOptions' => ['encode' => false, 'class' => 'help-block']]
]);
?>
errorOptions
кодировка по умолчанию имеет значение true, поэтому ваш html-код кодируется как сообщение, поэтому он не будет работать, пока вы не установите 'encode' => false
.