Standard TagLibs

Artikel bewerten:
Dieser Artikel wurde noch nicht bewertet. Bewerten Sie diesen Artikel als erstes!
Folgende TagLib-Tags stehen zur Verfügung. In nicht selbstschließenden Tags sind alle HTML- Tags und -Formatierungen erlaubt. Die Tags können mit den üblichen HTML-Attributen ausgestattet werden, sofern diese für die Ausgabe oder Funktion relevant sind.


1. Core

1.1. Addtaglib

TagLibs sind nur innerhalb eines Dokuments des Objektbaums gültig. Um eine selbst implementierte TagLib im aktuellen Dokument einbinden zu können wird folgender Tag verwendet. Dieser sollte möglichst am Anfang des Dokuments plaziert sein, da Tags erst nach erfolgreicher Einbindung einer TagLib geparst werden können.
<core:addtaglib namespace="" prefix="" class="" />
Beschreibung der Attribute: Die vom Entwickler erzeugte TagLib-Klasse muss dir Form "<prefix>_taglib_<class>" haben. Die innerhalb der Klasse zu implementierenden Methoden sind der API-Dokumentation zu entnehmen. In der Regel wird das Tag für die Einbindung der Form-TagLib verwendet. Eigene Taglibs machen vor allem dann Sinn, wenn eigene abgetrennte Bereiche einer Applikation mehrfach verwendbar gemacht werden wollen (z.B. Warenkorb).


1.2. Importdesign

Möchte der Template-Bauer an einer definierten Stelle ein weiteres Document einfügen, so kann der Tag
<core:importdesign namespace="" template="" [incparam=""] />
Beschreibung der Attribute: verwendet werden. Wird bei der Definition des Tags ein sog. pagepart-Template definiert, kann ein Template abhängig vom URL-Parameter eingebunden werden. Standard-Parameter ist "pagepart", dieser kann jedoch mit dem optionalen Attribut "incparam" angepasst werden. Beispiel für die Einbindung mit pagepart-Parameter:
<core:importdesign namespace="sites::testsite::pres::templates" template="[pagepart = test]" />
<core:importdesign namespace="sites::testsite::pres::templates" template="[cmsmodule = test]" \
 incparam="cmsmodule" />
Das eingebundene Template erbt automatisch die Eigenschaften des Vater-Objekts. Insbesondere Context und Sprache werden übertragen.


1.3. Setproperty

Um eine Eigenschaft des aktuellen Documents im Template setzen zu können steht dem, Entwickler der "core:setproperty"-Tag zur Verfügung. Typischer Anwendungsfall ist es den Context oder die Sprache eines Documents mit diesem Text zu setzen um auf eine anderssprachige Seite zu wechseln.
<core:setproperty name="" value="" />
Eine Liste der Eigenschaften eines von der Klasse "Document" erbenden Klasse entnehmen Sie bitte der API-Dokumentation.

Um das Tag verwenden zu können muss die TagLib "core:setproperty" erst via
<core:addtaglib namespace="core::pagecontroller" prefix="core" class="setproperty" />
eingebunden werden.

Beschreibung der Attribute:

1.4. Setattribute

Der Tag "core:setattribute" verhält sich analog zu "core:setproperty", nur wird bei diesem der Wert eines Attributes des Dokuments gesetzt.
<core:setattribute name="" value="" />
Um das Tag verwenden zu können muss die TagLib "core:setattribute" erst via
<core:addtaglib namespace="core::pagecontroller" prefix="core" class="setattribute" />
eingebunden werden.

Beschreibung der Attribute:

2. Html

2.1. Placeholder

Um in einem DocumentController Inhalte dynamisch füllen zu können gibt es den html:placeholder- Tag.
<html:placeholder name="" />
Beschreibung der Attribute:
Um einen Platzhalter mit Inhalt zu füllen kann man in einem DocumentController folgendes einbauen:
  $this->setPlaceHolder('NameDesPlatzhalters','InhaltDesPlatzHalters'); 

2.2. Getstring:

Der Tag "html:getstring" dient dazu einen Konfigurations-String aus einer sprachabhängigen Konfigurations-Datei auszulesen und anzuzeigen. So können auf einfache Weise mehrsprachige Anwendungen aufgebaut werden.
<html:getstring namespace="" config="" entry="" />
Um das Tag verwenden zu können muss die TagLib "html:getstring" erst via
<core:addtaglib namespace="tools::html::taglib" prefix="html" class="getstring" />
eingebunden werden.

Beschreibung der Attribute:
Die sprachabhängige Konfigurationsdatei muss jeweils eine Sektion pro Sprache (zweistelliger ISO-Länder-Code) und die verwendeten Konfigurationsschlüssel in den Sektionen enthalten sein. Soll der Tag
  <html:getstring namespace="modules::mymodule" config="language" entry="title" />
zur Anzeige eines sprachabhängigen Titels in einem Template genutzt werden, muss die Konfigurationsdatei
  /config/modules/mymodule/{APPS__CONTEXT}/{APPS__ENVIRONMENT}_language.ini
mit dem Inhalt
[de]
title = "Mein Modul"

[en]
title = "My module"
gefüllt werden. Diese Beschreibung gilt ebenso für die Tags <form:getstring /> (Kapitel 2.4.19.) und <template:getstring /> (Kapitel 2.3.3.).


2.3. Template

2.3.1. Basis-Funktionen

Um weitere Elemente für die Ausgabe-Steuerung definieren zu können gibt es so genannte Templates. Diese können innerhalb eines DocumentControllers manipuliert und verarbeitet werden. In einem Template gibt es wiederum Platzhalter, die dynamisch gesetzt werden können.
<html:template name="">
  [<template:placeholder name="" />]
  [<template:addtaglib namespace="" prefix="" class="" />]
</html:template>
Beschreibung der Attribute: Zugriff auf ein Template gewährt die private Methode "__getTemplate()" eines DocumentControllers. Mit Hilfe dieser Funktion kann eine Referenz auf ein Template-Objekt zurückgeliefert werden. Ein typischer Anwendungsfall sieht so aus:

Template:
<@controller namespace="" file="" class="" @>
<html:placeholder name="Content" />

<html:template name="MyTemplate">
  <template:placeholder name="MyPlaceHolder">
</html:template>
Controller:
class myDocumentController extends baseController
{
   function 
myDocumentController(){
   }

   function 
transformContent(){
      
$Template__MyTemplate = &$this->__getTemplate('MyTemplate');
      
$Template__MyTemplate->setPlaceHolder('MyPlaceHolder','MyContent');
      
$this->setPlaceHolder('Content',$Template__MyTemplate->transformTemplate());
   }
Hier wird in der XML-Datei ein Document-Controller, ein HTML-Platzhalter und ein Template mit zugehörigem Platzhalter definiert. Im Controller kann man nun mittels der Methoden __getTemplate() eine Referenz auf das Template holen und mit setPlaceHolder() den Platzhalter im Template füllen. Anschließend wird das Template transformiert und die Ausgabe in den HTML-Platzhalter mittels setPlaceHolder() eingesetzt. Es ist möglich mehrere Templates auf einer Seite zu platzieren. Oft wird das für die Ausgabe von unterschiedlichen Meldungen bei unterschiedlichen Events eingesetzt.


2.3.2. Template-Erweiterungen:

Um die Funktionalitäten innerhalb eines Templates mit weiteren TagLibs erweitern zu können steht der Tag "<template:addtaglib />" zur Verfügung. Ähnlich dem "<core:addtaglib />"- Tag können hier innerhalb eines Templates weitere TagLibs hinzugefügt werden.
<template:addtaglib namespace="" prefix="" class="" />
Beschreibung der Attribute: Ein Beispiel für die Verwendung des XML-Tags ist der TagLib-Tag <[html|template]:getstring /> zum Auslesen und Darstellen eines Strings aus einer Konfigurations-Datei. Siehe hierzu Kapitel 2.2.3. bzw. 2.4.


2.3.3. Getstring:

Der Tag "template:getstring" dient dazu einen Konfigurations-String aus einer sprachabhängigen Konfigurations-Datei auszulesen und anzuzeigen. So können auf einfache Weise mehrsprachige Anwendungen aufgebaut werden.
<template:getstring namespace="" config="" entry="" />
Um das Tag verwenden zu können muss die TagLib "template:getstring" erst via
<template:addtaglib namespace="tools::html::taglib" prefix="template" class="getstring" />
eingebunden werden.

Beschreibung der Attribute:

2.4. Form

Zur dynamischen Generierung und Handhabung von Formularen gibt es das html:form-Tag. Mit diesem können Formulare innerhalb eines Dokuments beschreiben werden. Ähnlich wie Templates sind diese im DocumentController verfügbar uns können entsprechend in das Dokument eingesetzt werden.
<html:form name="" [method=""]>
  ...
</html:form>
Beschreibung der Attribute: Innerhalb eines Formulars stehen folgende Tags zu Verfügung. Diese können in unterschiedlichen Kombinationen auftreten. Für ein Anwendungsbeispiel wird auf das Kontaktformular der Beispiel-Seite auf die API-Dokumentation verwiesen.

Des Weiteren stehen für Eingabe-Felder folgende Attribute zur Aktivierung und Konfiguration der Validierung von Benutzereingaben zur Verfügung (z.B. bei einer Textarea):
<form:area name="" [validate="" button="" [validator=""]]/>
Beschreibung der Attribute:

2.4.1. Textarea

<form:area name="" [id=""] [class=""] [style=""] />
Beschreibung der Attribute:

2.4.2. Textarea mit Content

<form:area name="" [id=""] [class=""] [style=""]>
  [..]
</form:area>
Beschreibung der Attribute:

2.4.3. Button

<form:button name="" [id=""] [class=""] [style=""] />
Beschreibung der Attribute:

2.4.4. Checkbox

<form:checkbox name="" [id=""] [class=""] [style=""] [checked=""] />
Beschreibung der Attribute:

2.4.5. Datums-Control

<form:date name="" [id=""] [class=""] [style=""] [yearrange=""] [offsetnames=""]/>
Beschreibung der Attribute:

2.4.6. Dateiupload-Feld

<form:file name="" [id=""] [class=""] [style=""] />
Beschreibung der Attribute:

2.4.7. Hidden-Feld

<form:hidden name="" value="" />
Beschreibung der Attribute:

2.4.8. Multiselect-Feld

<form:multiselect name="" [id=""] [class=""] [style=""] />
Beschreibung der Attribute:

2.4.9. Multiselect-Feld mit Optionen

<form:multiselect name="" [id=""] [class=""] [style=""]>
  <select:option value="" [selected="selected"]></select:option>
</form:multiselect>
Beschreibung der Attribute:

2.4.10. Passwort-Feld

<form:password name="" [id=""] [class=""] [style=""] />
Beschreibung der Attribute:

2.4.11. Platzhalter

<form:placeholder name="" />
Beschreibung der Attribute:

2.4.12. Radio-Button

<form:radio name="" id="" [class=""] [style=""] [checked=""]/>
Beschreibung der Attribute:

2.4.13. Select-Feld

<form:select name="" [id=""] [class=""] [style=""] />
Beschreibung der Attribute:

2.4.14. Select-Feld mit Optionen

<form:select name="" [id=""] [class=""] [style=""]>
  <select:option value="" [selected="selected"]></select:option>
</form:select>
Beschreibung der Attribute:

2.4.15. Text-Feld

<form:text name="" [id=""] [class=""] [style=""]/>
Beschreibung der Attribute:

2.4.16. Validator

<form:validate validator="" button="" field="" [type=""] [msginputreq=""] [msginputwrg=""] />
Beschreibung der Attribute:

2.4.17. Validator-Gruppe

<form:valgroup name="">
  <valgroup:validate validator="" button="" field="" [type=""] [msginputreq=""] [msginputwrg=""] />
  [<valgroup:placeholder name="" />]
</form:valgroup>
Beschreibung der Attribute: Optional besitzt die Validator-Gruppe Platzhalter, die mit der Methode setPlaceHolder() auf das Validator- Gruppen.Objekt gesetzt werden können. Attribute sind den html:placeholder-Tag zu entnehmen.


2.4.18. Generischer Validator

Der generische Validator kommt immer dann zum Einsatz, wenn es für den aktuellen Anwendungsfall keinen passenden gibt. Dieser gibt den Inhalt des Tags bei nicht erfolgreicher Prüfung des angegebenen Feldes zurück. So lassen sich beispielsweise einfach CSS-Attribute von HTML-Tags beeinflussen.

Reichen die Prüfmethoden der Klasse myValidator nicht aus, gibt es die Möglichkeit, die Validierung über einen regulären Ausdruck auszuführen. Hierzu muss das Attribut validator mit dem Wert RegExp gefüllt und der reguläre Ausdruck im Attribut regexp bereitgestellt werden.
<form:genericval button="" field="" [validator="" [regexp=""]]>[text]</form:genericval>
Beschreibung der Attribute:

2.4.19. Getstring

Der Tag "form:getstring" dient dazu einen Konfigurations-String aus einer sprachabhängigen Konfigurations-Datei auszulesen und anzuzeigen. So können auf einfache Weise mehrsprachige Formulare aufgebaut werden.
<form:getstring namespace="" config="" entry="" />
Beschreibung der Attribute:

2.4.20. Addtaglib

Die Taglib "form:addtaglib" bildet das Pendant zur Taglib "core:addtaglib" und bietet die Möglichkeit, die bestehende Funktionalität der Formular-Tags zu erweitern. Die Implementierung des Tags erlaub es beliebige weitere Formular-Tags einzubinden und zu verwenden.
<form:addtaglib namespace="" prefix="" class="" />
Beschreibung der Attribute:

2.4.21. Marker

Wie im Kapitel Dynamische Formulare beschrieben, ist der Tag <form:marker />-Tag zur Positionierung von dynamischen Formular-Elementen gedacht. Der Tag selbst erzeugt keine Ausgabe.
<form:marker name="" />
Beschreibung der Attribute:

3. Document

3.1. createobject

Der Tag erzeugt aus einer Inhalts-Datei unter dem Ordner ./frontend/content/ einen weiteren Unter-Objektbaum. Die Inhalts-Dateien werden in der Form
c_{LANGCODE}_{NAME}.html
erwartet, wobei
<doc:createobject requestparam="" defaultvalue="" />
Beschreibung der Attribute: Um die TagLib verwenden zu können muss diese mit einem
<core:addtaglib namespace="tools::html::taglib" prefix="doc" class="createobject" />
in der Template-Datei eingebunden werden.

Wichtiger Hinweis: Wird keine zum zu requestparam passende Datei im Ordner gefunden, erwartet der Tag eine Datei mit dem Namen
c_{LANGCODE}_404.htm
um anzeigen zu können, dass die gewünschte Seite nicht verfügbar ist. Ist auch diese Datei nicht verfügbar kommt es zu einem PHP-Fehler.


4. DocumentController

Um einem Dokument einen Controller zu deklarieren muss folgender Tag am Anfang des Templates platziert werden:
<@controller namespace="" file="" class="" @>
Beschreibung der Attribute: Die Implementierung des DocumentControllers muss immer vom baseController ableiten. Dieser ist bereits im PageController definiert und stellt grundlegende Methode für das Handling von DOM- Objekten bereit. Beispiel hierfür ist die __getForm()-Methode, die eine Referenz auf ein Formular zurückgibt.


5. FrontController

Mit dem Release 1.4-18.11.2007 wurde der Tag "<fcon:importdesign />" eingefügt. Dieser unterstützt bei der Implementierung von FrontController-basierten Applikationen und bindet Views auf Grund von Model-Informationen im Sinne des MVC-Pattern ein. Hierzu muss eine eigene Model-Klasse für die aktuelle Applikation oder das eingebundene Modul erstellt werden, aus dem die Informationen für die Einbindung des Views bezogen werden können. Die Steuerung der View-Einbindung wird typischerweise durch eigene FrontController-Actions geregelt, die im Modus "prepagecreate" (siehe FrontController, Kapitel 1.6) ausgeführt wird. Diese kann in der URL enthaltene Parameter an das Model-Objekt weitergeben.
  <fcon:importdesign
      templatenamespace=""
      modelnamespace=""
      modelfile=""
      modelclass=""
      modelparam=""
      [sessionsingleton=""]
  />
Beschreibung der Attribute:

Kommentare

Möchten Sie den Artikel eine Anmerkung hinzufügen, oder haben Sie ergänzende Hinweise? Dann können Sie diese hier einfügen. Die bereits verfassten Anmerkungen und Kommentare finden Sie in der untenstehenden Liste.

«   1   »
Einträge/Seite: | 5 | 10 | 15 | 20 |

1 Christian
01.02.2008, 00:45:42
Hinweise zu untenstehendem Kommentar:

1. Zu den TagLibs *:getstring haben sich einige Tippfehler eingeschlichen, die gerade berichtigt wurden.

2. Es gibt drei Varianten zu den *:getstring-Taglibs: <html:getstring />, <template:getstring /> und <form:getstring />. Die ersten beiden müssen jeweils im entsprechenden Gültigkeitsbereich durch <core:addtaglib /> bzw. <template:addtaglib /> für die <template:getstring />-TagLib bekannt gemacht werden.

2 fliegermichl
29.01.2008, 11:11:12
Im Bereich 2.2.3 getstring steht:
Um das Tag verwenden zu können muss die TagLib "core:setattribute" erst via

<template:addtaglib namespace="tools::html::taglib" prefix="template" class="getstring" />

Wie nun? <core:addtaglib> oder <template:addtaglib>?