Den login
-View zu schreiben ist einfach. Wir beginnen mit dem form
Tag,
dessen action-Attribut die URL der zuvor beschriebenen login
-Action ist.
Wir ergänzen dann Label und Eingabefelder für die in der Klasse LoginForm
definierten Attribute. Zum Schluss fügen wir einen Button zum Absenden
hinzu. Das alles lässt sich mit reinem HTML-Code bewerkstelligen.
Yii bietet einige Helferklassen, die die Gestaltung von Views erleichtern. Um beispielsweise ein Textfeld oder eine Dropdown-Liste zu erstellen, können wir CHtml::textField() bzw. CHtml::dropDownList() aufrufen.
Info: Man könnte sich fragen, welchen Nutzen diese Helfer bringen, wenn sie doch, verglichen mit einfachem HTML, fast die gleiche Menge an Code erfodern. Die Antwort ist, dass die Helfer mehr als nur HTML-Code bieten. Zum Beispiel erzeugt der folgende Code ein Texteingabefeld, das das Absenden des Formulars einleitet, wenn sein Wert vom Benutzer verändert wurde.
CHtml::textField($name,$value,array('submit'=>''));
Dies würde andernfalls überall klobigen JavaScript-Code erforderlich machen.
Nachfolgend benutzen wir CHtml, um das Anmeldeformular zu erstellen. Wir
nehmen an, dass die Variable $user
eine Instanz von LoginForm
ist.
<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'); Angemeldet bleiben<br /> echo CHtml::submitButton('Login'); </div> echo CHtml::endForm(); </div><!-- yiiForm -->
Der obige Code generiert ein dynamischeres Formular. CHtml::activeLabel()
erzeugt zum Beispiel ein Label, das mit dem angegebenen Model-Attribut
verknüpft ist. Wenn beim Attribut ein Eingabefehler auftritt, ändert
sich die CSS-Klasse des Labels in error
, was über entsprechende CSS-Stile
wiederum das Erscheinungsbild des Labels ändert. Gleichermaßen erzeugt
CHtml::activeTextField() ein Texteingabefeld für das angegebene Model-Attribut
und verändert ebenfalls seine CSS-Klasse im Falle eines Eingabefehlers.
Wenn wir die mit den yiic
-Skripten mitgelieferte Stylesheet-Datei form.css
nutzen, sieht das erzeugte Formular folgendermaßen aus:
Die Anmeldeseite
Die Anmeldeseite mit Fehlern
Signup or Login in order to comment.