Joomla! Programmierung/Programmierung/Komponenten/Front/View

Aus Joomla! Dokumentation
Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

[Bearbeiten] Ziel

In diesem Schritt wird die Ausgabe der Komponente vorbereitet. Dabei wird ein sogenannter View angelegt. Dieser fordert vom Model alle benötigten Dateien an, die dann Verarbeitet werden. Schlussendlich werden die Daten an die Templatedatei übergeben und in unserem Fall unser Gästebuch angezeigt.

[Bearbeiten] Grundlegendes

Die Views einer Komponente befinden sich immer im Ordner Folder blue.png views. In diesem wird dann ein Unterordner mit dem Namen des Views erstellt. In diesem Ordner wird dann nochmals ein Unterordner Folder blue.png tmpl erstellt, der die Templatedateien des Views enthält. Der View selbst kann dann über einen Parameter in der Url aufgerufen werden.

index.php?option=com_komponentenname&view=viewname

Wenn der View den selben Namen wie die Komponente besitzt, dann wird dieser View als Standardview aufgerufen, wenn kein anderer über die Urlparameter angefordert wird. Somit sind folgende zwei Aufrufe identisch:

index.php?option=com_komponentenname&view=komponentenname
index.php?option=com_komponentenname

[Bearbeiten] view.xxx.php

Joomla! selbst liefert vier verschiedene Viewarten mit. Während die view.html.php der Standardview ist und automatisch aufgerufen wird, müssen die anderen Dateien mit dem Parameter format aufgerufen werden.

// view.html.php
index.php?option=com_komponentenname&view=viewname
 
// view.raw.php
index.php?option=com_komponentenname&view=viewname&format=raw
 
// view.feed.php
index.php?option=com_komponentenname&view=viewname&format=feed
 
// view.pdf.php
index.php?option=com_komponentenname&view=viewname&format=pdf
view.html.php
Dieses Format ist für eine "normale" HTML Darstellung zuständig. Es ist zudem das Standardformat und wird von Joomla! angenommen, wenn keine zusätzlichen Parameter angegeben werden. In den meisten Fällen ist dieses Format für die meisten Views ausreichend.
view.raw.php
Bei diesem Format werden die Inhalte in Rohform ausgegeben. Das heißt, Joomla! selbst fügt keinerlei Output (sei es Template oder Module) zur Ausgabe hinzu. Dieses Format ist nützlich, wenn z.B. bestimmte Views in einer LightboxToDo Verlinken angezeigt werden sollen.
view.feed.php
Dieses Format kann genutzt werden um sehr einfach einen RSS Feed zu erstellen.
view.pdf.php
Mit diesem Format kann "on the fly" eine PDF Datei erstellt werden.

[Bearbeiten] view.html.php - Der View

In dieser Komponente wird im Frontend nur ein View genutzen; und zwar genau den Standardview jnafu. Dieser besitzt als "Viewdatei" eine view.html.php. Erstellen Sie somit im Ordner Folder blue.png views einen Unterordner Folder blue.png jnafu mit einem weiteren Unterordner Folder blue.png tmpl. Erstellen Sie zusätzlich im Ordner Folder blue.png jnafu die Datei File white.png view.html.php. Damit erhalten Sie folgende Ordnerstruktur:

Folder blue.png com_jnafu

|_ Folder blue.png assets
|_ Folder blue.png controllers
|_ Folder blue.png models
|_ Folder blue.png views
|_ Folder blue.png jnafu
|_ Folder blue.png tmpl
|_ File php.png view.html.php

[Bearbeiten] Erste Hackversuche unterbinden

Wie in jeder anderen Joomla! Datei sollten Sie als erstes einen Schutz einbauen, der Direktzugriffe auf die Datei unterbindet:

// Verhindern, dass die Datei direkt aufgerufen wird
defined('_JEXEC') or die('Restricted access');

[Bearbeiten] Einbinden der Joomla! View Klasse

Als nächstes muss die Joomla! View Klasse JViewToDo JView - Verlinken eingebunden werden. Joomla! bietet in diesem Fall die Funktion jimportToDo JInclude - Verlinken an.

// Einbinden des Joomla! Views
jimport('joomla.application.component.view');

[Bearbeiten] Die JNafuViewJNafu Klasse

Die View-Klassen einer Komponente haben immer folgende Struktur: [Komponentenname]View[Viewnamen] somit lautet die Klasse für diesen View JNafuViewJNafu (Beachten Sie, dass die Groß- und Kleinschreibung bei Klassennamen nicht relevant sind). Diese Klasse soll nun alle Methoden von der Joomla! Klasse JView erben (extends).

// Die JNafu View Klasse
class JNafuViewJNafu extends JView {
 
}

[Bearbeiten] Die display Methode

In der Methode "display" werden die Daten aus dem Model geholt und aufbereitet. Zusätzlich können hier auch verschiedene Parameter gesetzt und zugehörige CSS-/Javascriptdateien eingebunden werden. Am Ende werden benötigte Daten an die Templatedatei übergeben. In dieser Methode selbst sollte keine Ausgabe stattfinden, stattdessen sollten dies den Templatedatei vorbehalten sein.

In dieser display Methode werden erst mal nur alle Gästebucheinträge aus der Datenbank geladen und an die Templatedatei übergeben. Als letzter Schritt wird noch die PaginationToDo Verlinken auf JPagination an die Templatedatei übergeben.

// Generelle display Methode vom JNafu View
public function display($tpl=null) {
 
    // Lade alle Gästebucheinträge aus dem Model
    $entries = $this->get('JNafuEntries');
 
    // Lade Pagination für die Gästebucheinträge
    $pagination = $this->get('JNafuPagination');
 
    // Übergebe benötigte Variablen an die Templatedatei
    $this->assignRef('entries', $entries);
    $this->assignRef('pagination', $pagination);
 
    // Aufrufen der display Methode von JView, damit die Templatedatei eingebunden wird
    parent::display($tpl);
 
}

[Bearbeiten] Der komplette Quellcode

<?php
/**
 * @author      Joomla!-Nafu
 * @authorurl   http://www.joomla-nafu.de
 * @version     0.1
 * @license     GNU General Public License, http://www.gnu.org/licenses/gpl-2.0.html
 *
 * JNafu! - Joomla! 1.5.x Gästebuch Demo Komponente
 * Copyright (C) 2009 - Joomla!-Nafu
 *
 * This program is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License as published by the
 * Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
 * more details.
 *
 * You should have received a copy of the GNU General Public License along
 * with this program; if not, see <http://www.gnu.org/licenses/>.
**/
 
// Verhindern, dass die Datei direkt aufgerufen wird
defined('_JEXEC') or die('Restricted access');
 
// Die JNafu View Klasse
class JNafuViewJNafu extends JView {
 
    // Generelle display Methode vom JNafu View
    public function display($tpl=null) {
 
        // Lade alle Gästebucheinträge aus dem Model
        $entries = $this->get('JNafuEntries');
 
        // Lade Pagination für die Gästebucheinträge
        $pagination = $this->get('JNafuPagination');
 
        // Übergebe benötigte Variablen an die Templatedatei
        $this->assignRef('entries', $entries);
        $this->assignRef('pagination', $pagination);
 
        // Aufrufen der display Methode von JView, damit die Templatedatei eingebunden wird
        parent::display($tpl);
 
    }
 
}

[Bearbeiten] Siehe auch

Meine Werkzeuge
Namensräume
Varianten
Aktionen
Navigation
Sonstiges
Team Navigation
Werkzeuge