von Carsten Lucke, 28.02.2008

Einführung in die Entwicklung und grundlegende Konzepte: Workshop Zend Framework

Aus dem
t3n Magazin Nr. 11

Jetzt kaufen

In der Methode zum Anzeigen der Artikelliste wird lediglich die View-Eigenschaft „articleData“ mit den Daten der vorhandenen Artikel gefüllt. Diese Daten lesen wir aus einer statischen Eigenschaft des Artikel-Controllers aus. In einem realen Anwendungsfall würden Sie die Daten natürlich aus einer Datenquelle Ihrer Wahl lesen und nicht hart im Controller kodieren. Wie der Name vermuten lässt, dient die Methode „detailsAction“ dazu, Detailinformationen zu einem Artikel anzuzeigen. Dazu wird der Requestparameter „id“ ausgelesen, der in diesem einfachen Beispiel die Artikelnummer repräsentiert.

Beim Auslesen verwenden wir einen Filter für Integerwerte. Dazu wird zuerst mit der Klasse „Zend_Loader“ die gewünschte Filterklasse geladen, dann instantiiert und verwendet. Dadurch stellen wir sicher, dass der ausgelesene Request-Parameter auch wirklich vom Typ „Integer“ ist und nicht in irgendeiner Art und Weise manipuliert worden ist. Wir haben nun die Artikelnummer und prüfen, ob unsere Daten einen Artikel mit der gegebenen Nummer enthalten. Ist das nicht der Fall, wird der View mit dem Namen „not-found“ gerendert, der den Konventionen entsprechend durch die Datei „application/views/scripts/artikel/not-found.phtml“ repräsentiert wird.

Die Klasse für den ArtikelController

class ArtikelController extends Zend_Controller_Action
{
	private static $data = array(
		1 => array(
			'name'  => 'Speedo FASTSKIN FS Pro Recordbreaker Bodyskin', 
			'price' => 195.00),
		2 => array(
			'name'  => 'Speedo FASTSKIN FS Pro Recordbreaker Kneeskin ', 
			'price' => 169.00),
		3 => array(
			'name'  => 'Speedo Fastskin Male FS II Jammer', 
			'price' => 75.00),
		4 => array(
			'name'  => 'Speedo FS II Printed Jammer', 
			'price' => 99.00)
	);    
	public function indexAction() {
		$this->_forward('zeige-liste');
	}    
	public function zeigeListeAction() {
		$this->view->articles = self::$data;
	}   
	public function detailsAction() {
		Zend_Loader::loadClass('Zend_Filter_Int');
		$filter = new Zend_Filter_Int();
		$id = $filter->filter($this->getRequest()->getParam('id'));
		if (! array_key_exists($id, self::$data)) {
			$this->render('not-found');
		}  else {
			$this->view->articleData = self::$data[$id];
		}
	}
}

Listing 5

Greift man auf diese Weise in das Rendering ein, wird der ViewRenderer „Action-Helper“ nicht mehr aktiv, um den Standardview zu rendern. Sofern der Artikel existiert, setzen wir die View-Eigenschaft „articleData“ und weisen dieser die entsprechenden Daten zu. Den Rest erledigt hier dann der ViewRenderer.

Den Artikel-Controller haben wir damit ausführlich besprochen. Was nun noch fehlt, sind die Views. Views sind nichts weiter als HTML-Dateien, in die man PHP-Code einbetten kann. Innerhalb einer solchen View-Datei hat man durch die Variable „$this“ Zugriff auf die aktuelle View-Instanz.

Seite:  1 2 3 4 5 6 7 8 9

Empfohlene Artikel