Stworzenie widoku login
jest bardzo proste. Rozpoczynamy od tagu form
, którego
atrybut akcji powinien być adresem URL poprzednio opisanej akcji login
.
Następnie wstawiamy etykiety oraz pola wejściowe dla atrybutów zadeklarowanych
w klasie LoginForm
. Na końcu wstawiamy przycisk wysyłający, który może zostać
kliknięty przez użytkownika celem przesłania formularza. Wszystko to może zostać
zrobione za pomocą czystego kody HTML.
Yii dostarcza kilka klas helperów, aby ułatwić komponowanie widoku. Na przykład, aby stworzyć pole tekstowe, możemy wywołać metodę CHtml::textField(); aby utworzyć listę rozwijaną (ang. drop-down) wywołujemy metodę CHtml::dropDownList().
Info: Można się zastanawiać, jaka jest korzyść płynąca z używania helperów jeśli wymagają podobnej ilości kodu w porównaniu do zwykłego kodu HTML. Odpowiedź jest prosta, helpery potrafią więcej niż kod HTML. Na przykład, następujący kod wygeneruje pole tekstowe, które może wywołać przesłanie formularza jeśli jego wartość zostanie zmieniona przez użytkownika.
CHtml::textField($name,$value,array('submit'=>''));
W przeciwnym razie będzie to wymagało pisania wszędzie pokracznego kodu JavaScript.
W następnym przykładzie używamy klasy CHtml aby utworzyć formularz logowania.
Zakładamy, że zmienna $user
reprezentuje instancje LoginForm
.
<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 -->
Powyższy kod generuje bardziej dynamiczny formularz. Na przykład,
metoda CHtml::activeLabel() generuje etykietę powiązaną z określonym atrybutem modelu.
Jeśli atrybut posiada błąd w danych wejściowych, klasa CSS etykiety będzie zmieniona
na error
, co zmieni wygląd etykiety odpowiednio do stylu CSS. Podobnie metoda
CHtml::activeTextField() wygeneruje pole wejściowe dla określonego atrybutu modelu
oraz zmieni jego klasę CSS w momencie wystąpienia błędów we wprowadzanych danych.
Jeśli używamy pliku stylu CSS form.css
dostarczonego przez skrypt yiic
wygenerowany
formularz będzie podobny do następującego:
Strona logowania
Logowania wraz ze stroną błędów
Signup or Login in order to comment.