2015-09-09 35 views
7

ログインフォームでは、対応するフィールド名を持つすべての検証メッセージの最後にglyphicon-removeアイコンが必要です。だから私はLogin modelのコードの下で使用しました。Yii2、属性名を持つカスタム検証メッセージ

['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'を使用することにより、正しく出力されます。しかし、私が必要とするのは、すべてのフィールドごとに個別に定義するのではなく、すべてのフィールドに共通に定義する必要があるということです。

答えて

16

メッセージに{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'], 
    ]; 
} 

また、{分}または{} requiredValueご関心を

+0

正確に私が必要なもの。あなたの答えをもう一度おねがいします。ハッピーコーディング:) –

1

フォームでこれを追加します。

_form.php

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

errorOptionsデフォルトのエンコーディングは、あなたのHTMLコードをメッセージとしてエンコードされているので、本当であるので、あなたが設定するまで、それは動作しません。 'encode' => false

+0

おかげのようなバリデータに設定された他のオプションを使用することができますが、私は何か他のものを必要としています。更新された質問を確認してください。ありがとう。おかげさまで –

関連する問題