Direkte Template-Ausgabe

Aus APF Wiki [de]
Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

Frage

Können Templates und Formulare direkt (=ohne Einsetzen in einen Platzhalter) im Document-Controller ausgegeben werden.

Antwort:

Ja. Die Formular- und Template-Taglib unterstützen das "TransformOnPlace"-Feature. Das bedeutet, dass zur Ausgabe kein weiterer Platzhalter benötigt wird, sondern einfach im Document-Controller das jeweilige Objekt angewiesen werden kann, sich selbst darzustellen:

// Formular direkt ausgeben
$form = $this->__getForm('formular');
$form->transformOnPlace();
 
// Template direkt ausgeben
$tmpl = $this->__getTemplate('test2');
$tmpl->transformOnPlace();

Ist es gewünscht, das Template in das Formular einzusetzen und das Formular direkt auszugeben, so kann innerhalb des <html:form />-Tags ein <form:placeholder /> definiert werden und dort das Template eingesetzt werden:

Template:

<html:form name="formular" method="post">
   <form:placeholder name="test2" />
   <form:text name="text" />
   <form:button name="senden" />
</html:form>
<html:template name="test2">
   <p>text angekommen: <strong><template:placeholder name="name" /></strong></p>
</html:template>


Controller:

// Formular beziehen
$form = $this->__getForm('formular');
 
// Platzhalter füllen
if(...){
   $tmpl = $this->__getTemplate('test2');
   $form->setPlaceHolder('test2',$tmpl->transformTemplate());
}
 
// Formular direkt ausgeben
$form->transformOnPlace();

Mit der Version 1.11 kannst du für die Validierung von Formularen auch <form:error /> und <form:listener /> Tags nutzen um "Platzhalter"-Bereich im Formural zu definieren. Hierzu wird jedoch die aktuelle SVN-Version (1.11), die Anfang 2010 als stable erscheinen wird. Weitere Dokumentation dazu findet sich unter [1].

Meine Werkzeuge
Namensräume
Varianten
Aktionen
menü
misc
Werkzeuge