0 follower

Skapa Form

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">
<?php echo CHtml::beginForm(); ?>
 
<?php echo CHtml::errorSummary($user); ?>
 
<div class="simple">
<?php echo CHtml::activeLabel($user,'username'); ?>
<?php echo CHtml::activeTextField($user,'username'); ?>
</div>
 
<div class="simple">
<?php echo CHtml::activeLabel($user,'password'); ?>
<?php echo CHtml::activePasswordField($user,'password');
?>
</div>
 
<div class="action">
<?php echo CHtml::activeCheckBox($user,'rememberMe'); ?>
Remember me next time<br/>
<?php echo CHtml::submitButton('Login'); ?>
</div>
 
<?php 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

Loginsidan med felmeddelanden

Loginsidan med felmeddelanden