ログインフォームでは、すべての検証メッセージの最後に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
を設定するまで機能しません。