2015-09-09 23 views
7

W formularzu logowania potrzebuję mieć ikonę glyphicon-remove na końcu każdego komunikatu sprawdzania poprawności z odpowiednimi nazwami pól. Więc użyłem poniższego kodu w Login model.Yii2, Niestandardowy komunikat sprawdzania poprawności z nazwami atrybutów

['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>'] 

Zamiast powyższego kodu, Czy istnieje sposób, aby użyć czegoś takiego jak poniższy kod.

[['email', 'password'], 'required', 'message' => $attribute.' cannot be blank<span class="glyphicon glyphicon-remove"></span>'] 

Ideą powyższego kodu jest dynamiczne uzyskanie odpowiedniej nazwy pola dla każdego pola.

Proszę zrobić potrzebne. Dzięki.

Aktualizacja

Kod HTML (<span class="glyphicon glyphicon-remove"></span>) Użyłem tu jest odtwarzany poprawnie za pomocą encode=>'false'. Ale to, czego potrzebuję, to zamiast definiować osobno dla każdego pola, trzeba zdefiniować wspólnie dla wszystkich pól.

Odpowiedz

16

Możesz użyć {attribute} w swojej wiadomości, aby odwołać się do nazwy atrybutu.

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'], 
    ]; 
} 

Można również skorzystać z innych opcji ustawionych w walidator jak {min}} lub {requiredValue

+0

Dzięki. Dokładnie to, czego potrzebuję. Jeszcze raz dziękuję za odpowiedź. Szczęśliwe kodowanie :) –

1

Dodaj to w formie:

_form.php

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

errorOptions domyślne kodowanie jest prawdą tak, kod html jest zakodowany jako wiadomości, więc to nie będzie działać, dopóki nie zostanie ustawiony 'encode' => false.

+0

Dziękujemy za zainteresowanie, ale muszę coś innego. Czy możesz sprawdzić moje zaktualizowane pytanie. Dzięki. –