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