Att skriva login
-vyn är okomplicerat. Man börjar med en form
-tagg vars
action-attribut skall vara URL:en för login
-åtgärden som tidigare beskrivits.
Därefter infogas ledtexter och inmatningsfält för de attribut som deklarerats i
klassen LoginForm
. Till sist infogas en skicka-knapp som användaren klickar på
för att posta formuläret. Allt detta kan göras i renodlad HTML-kod.
Yii tillhandahåller några hjälpklasser för att underlätta sammansättning av vyer. Till exempel, för att skapa ett textinmatningsfält kan CHtml::textField() användas; för att skapa en drop-down listkontroll används CHtml::dropDownList().
Info: Man kan fråga sig vilken vinsten är med att använda hjälpklasser om de erfordrar samma mängd kod jämfört med ren HTML-kod. Svaret är att hjälpklasser kan leverera mer än bara HTML-kod. Till exempel, följande kod kan generera ett textinmatningsfält som kan sätta igång inskickning av formuläret om dess värde ändras av användare.
CHtml::textField($name,$value,array('submit'=>''));
Detta skulle annars kräva att man skriver skrymmande Javascriptkod överallt.
I det följande används CHtml till att skapa login-formuläret. Antag att
variabeln $user
representerar LoginForm
-instansen.
<div class="yiiForm"> echo CHtml::beginForm(); echo CHtml::errorSummary($user); <div class="simple"> echo CHtml::activeLabel($user,'username'); echo CHtml::activeTextField($user,'username'); </div> <div class="simple"> echo CHtml::activeLabel($user,'password'); echo CHtml::activePasswordField($user,'password'); </div> <div class="action"> echo CHtml::activeCheckBox($user,'rememberMe'); Remember me next time<br/> echo CHtml::submitButton('Login'); </div> echo CHtml::endForm(); </div><!-- yiiForm -->
Ovanstående kod genererar ett mer dynamiskt formulär. Till exempel,
CHtml::activeLabel() genererar en ledtext associerad till det specificerade
attributet i modellen. Om attributet har ett inmatningsfel, ändras ledtextens
CSS-klass till error
, vilket förändrar ledtextens utseende med hjälp av
tillämpliga CSS-stilar. På liknande sätt genererar CHtml::activeTextField()
ett textinmatningsfält för det specificerade attributet i modellen och ändrar
dess CSS-klass i händelse av inmatningsfel.
Om CSS-stilarna som används är de som finns i filen form.css
, tillhandahållen
av yiic
-skriptet, kommer det genererade formuläret att se ut i stil med följande:
Loginsidan
Loginsidan med felmeddelanden
Signup or Login in order to comment.