12

ログインフォームでは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'ます。しかし、私が必要としているのは、フィールドごとに個別に定義するのではなく、すべてのフィールドに共通に定義する必要があるということです。

4

2 に答える 2

29

メッセージで を使用{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}

于 2015-09-09T11:32:16.367 に答える
2

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

_form.php

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

errorOptionsデフォルトのエンコーディングはtrueなので、htmlコードはメッセージとしてエンコードされるため、設定するまで機能しません'encode' => false.

于 2015-09-09T11:19:54.793 に答える