Files
yii/docs/guide/de/basics.view.txt
2009-03-01 01:32:35 +00:00

154 lines
5.4 KiB
Plaintext

View
====
Ein View ist ein PHP-Script, das hauptsächlich aus Elementen der
Bedienoberfläche besteht. Es kann auch PHP-Anweisungen enthalten, aber es
wird empfohlen, dass diese Anweisungen keine Daten-Models verändern und
relativ einfach gehalten werden. Im Sinne einer Trennung von Logik und
Präsentation, sollten größere Logikblöcke statt im View, besser im
Controller oder im Model untergebracht werden.
Ein View hat einen Namen, der beim Rendern zur Bestimmung der View-Datei
verwendet wird. Der Name eines Views entspricht dem Dateinamen des
View-Scripts. Der View `edit` bezieht sich auf die Script-Datei `edit.php`. Um
einen View zu rendern, rufen Sie [CController::render()] mit dem Namen des
Views auf. Die Methode sucht dann im Verzeichnis
`protected/views/ControllerID` nach der entsprechenden View-Datei.
Innerhalb eines View-Scripts können wir über `$this` auf die
Controller-Instanz zugreifen. So können wir im View mit `$this->propertyName`
auf jede Eigenschaft des Controllers zugreifen, was man auch als `pull`-Verfahren
(ziehen) bezeichnet.
Wir können auch einen `push`-Ansatz (schieben) verfolgen, um
Daten wie hier an den View zu übergeben:
~~~
[php]
$this->render('edit', array(
'var1'=>$value1,
'var2'=>$value2,
));
~~~
In obigem Fall extrahiert die Methode [render()|CController::render] den
zweiten Array-Parameter in einzelne Variablen. Daher können wir im View-Script
auf die lokalen Variablen `$var1` und `$var2` zugreifen.
Layout
------
Ein Layout ist ein spezieller View, der zum "dekorieren" von Views verwendet
wird. In der Regel enthält es die Teile der Bedienoberfläche, die mehrere
Views gemeinsam haben. Ein Layout kann zum Beispiel Header- und
Footer-Bereiche enthalten, und den View-Inhalt zwischen den beiden einbinden,
~~~
[php]
......header hier......
<?php echo $content; ?>
......footer hier......
~~~
wobei `$content` das gerenderte Ergebnis des Inhalt-Views enthält.
Ein Layout wird jedesmal angewendet, wenn [render()|CController::render]
aufgerufen wird. Per Vorgabe wird das Script in
`protected/views/layouts/main.php` als Layout verwendet. Dies kann entweder
über [CWebApplication::layout] oder [CController::layout] angepasst werden.
Rufen Sie [renderPartial()|CController::renderPartial] auf, um einen View zu
rendern, ohne ein Layout anzuwenden.
Widget
------
Ein Widget (sinngem.: Dings) ist eine Instanz vom Typ [CWidget] oder
dessen Kindklassen. Es handelt sich um eine Komponente, die im Wesentlichen für
Präsentationszwecke verwendet wird. Widgets werden für gewöhnlich in ein View-Script
eingebettet, um einen komplexeren, jedoch in sich geschlossen Teil der
Anwenderoberfläche zu erzeugen. Zum Beispiel kann man ein Kalender-Widget
verwenden um ein komplexes Kalender-Bedienelement zu rendern. Widgets
erlauben eine bessere Wiederverwendbarkeit von Anwenderschnittstellen.
Um ein Widget zu verwenden, gehen Sie wie folgt im View-Script vor:
~~~
[php]
<?php $this->beginWidget('pfad.zu.Widget-Klasse'); ?>
...Inhalt, der vom Widget erfasst werden kann...
<?php $this->endWidget(); ?>
~~~
oder
~~~
[php]
<?php $this->widget('pfad.zu.Widget-Klasse'); ?>
~~~
Letztere Form wird verwendet, wenn das Widget keinen eingebetteten Inhalt
benötigt.
Das Verhalten von Widgets kann per Konfiguration angepasst werden. Dies
geschieht, indem man beim Aufruf von [CBaseController::beginWidget] oder
[CBaseController::widget] die gewünschten Eigenschaftswerte übergibt.
Wenn wir zum Beispiel das Widget [CMaskedTextField] verwenden, können wir die
zu verwendende Maske angeben. Dazu können wir ein Array mit den
Eigenschaftsnamen als Schlüssel und den gewünschten Startwerten als Wert
übergeben:
~~~
[php]
<?php
$this->widget('CMaskedTextField',array(
'mask'=>'99/99/9999'
));
?>
~~~
Um ein neues Widget zu definieren, erweitern Sie [CWidget] und überschreiben
Sie dessen Methoden [init()|CWidget::init] und [run()|CWidget::run].
~~~
[php]
class MyWidget extends CWidget
{
public function init()
{
// Diese Methode wird von CController::beginWidget() aufgerufen
}
public function run()
{
// Diese Methode wird von CController::endWidget() aufgerufen
}
}
~~~
Wie ein Controller, kann auch ein Widget seinen eigenen View besitzen.
Standardmäßig sind die View-Dateien des Widgets im Unterverzeichnis `views`
des Ordners abgelegt, der die Widget-Datei enthält. Ähnlich wie im Controller
können diese Views durch Aufruf von [CWidget::render()] gerendert werden.
Der einzige Unterschied besteht darin, dass kein Layout auf einen Widget-View
angewendet wird.
System-View
-----------
System-Views beziehen sich auf Views, die von Yii zur Anzeige von Fehler- und
Log-Informationen verwendet werden. Fordert ein Benutzer zum Beispiel einen
Controller oder eine Action an, die nicht existieren, löst Yii eine Exception
aus, die den Fehler beschreibt. Yii stellt diese Exception unter Zuhilfenahme
eines speziellen System-Views dar.
Die Bezeichnung von System-Views folgt den selben Regeln. Namen wie
`errorXXX` beziehen sich auf Views zur Anzeige einer [CHttpException] mit
(HTTP-)Fehlercode `XXX`. Wird zum Beispiel eine [CHttpException] mit dem
Fehlercode 404 ausgelöst, wird der View `error404` angezeigt.
Yii stellt eine Reihe von Standard-System-Views bereit, die unter
`framework/views` zu finden sind. Sie können leicht angepasst werden, indem
gleichnamige View-Dateien in `protected/views/system` angelegt werden.
<div class="revision">$Id: basics.view.txt 416 2008-12-28 05:28:11Z qiang.xue $</div>