Formular im Template

Hier finden sich Fragen und Ergänzung zur Dokumentation. // All questions and discussions about the documentation.
Antworten
Thalo
Beiträge: 257
Registriert: 10.08.2009, 16:56:52

Formular im Template

Beitrag von Thalo » 20.11.2009, 04:05:22

Hi,

ich spiele momentan ein wenig mit dem APF herum und komme gerade nicht weiter. Da ich ein Freund von Affenformularen bin, wollte ich das Formular und die Ausgabe nach Verarbeitung in einer Datei erledigen.

Dazu habe ich zwei eigenständige Templates:

Code: Alles auswählen

<html:template name="test1">
    <p>text text text text text</p>
    <html:form name="formular" method="post">
        <form:text name="text" />
        <form:button name="senden" />
    </html:form>
</html:template>

<html:template name="test2">
    <p>text angekommen: <strong><template:placeholder name="name" /></strong></p>
</html:template>
Allerdings habe ich nun das Problem, dass ich nicht mehr auf das Formular zugreifen kann. Ist dieser Ansatz falsch? Wie löst man so etwas mit dem APF? :geek:

Megger
Beiträge: 1233
Registriert: 04.11.2008, 10:57:37

Re: Formular im Template

Beitrag von Megger » 20.11.2009, 09:14:57

Du brauchst das Template um das Formular nicht.

Ich würde es folgendermaßen lösen:

Code: Alles auswählen

<html:placeholder name="output" />

<html:form name="formular" method="post">
    <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>
IM Documentcontroller setzt du dann den Placeholder entweder mit dem transformierten Formular oder mit dem transformierten Template je nach Situation. Wenn du das Formular nicht transformierst, taucht es auch nicht im Quellcode auf
Tutorial: Browsergame mit dem APF (Die ersten Parts handeln von Installation und Inbetriebnahme des APFs, deswegen sicherlich auch für alle Nicht-Browsergame-Programmierer interessant)

APF-Version
  • Entwicklung: 2.0
  • Produktiv: 1.15

Thalo
Beiträge: 257
Registriert: 10.08.2009, 16:56:52

Re: Formular im Template

Beitrag von Thalo » 20.11.2009, 20:42:37

Megger hat geschrieben:Du brauchst das Template um das Formular nicht.

Ich würde es folgendermaßen lösen:

Code: Alles auswählen

<html:placeholder name="output" />

<html:form name="formular" method="post">
    <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>
IM Documentcontroller setzt du dann den Placeholder entweder mit dem transformierten Formular oder mit dem transformierten Template je nach Situation. Wenn du das Formular nicht transformierst, taucht es auch nicht im Quellcode auf
Hi,

Danke für deinen Vorschlag. Deine Möglichkeit gefällt mir nicht ganz so gut, schränkt mich einfach zu sehr ein.

Gibt es keine Möglichkeit für mein Vorhaben? Wie setzen denn andere soetwas um?

Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: Formular im Template

Beitrag von Screeze » 20.11.2009, 20:46:25

was schränkt dich daran denn ein?
du kannst das formular genauso behandeln wie ein normales template im normalfall. erklär mal wo genau du da denkst eingeschränkt zu sein.

Ich löse es wie megger

Thalo
Beiträge: 257
Registriert: 10.08.2009, 16:56:52

Re: Formular im Template

Beitrag von Thalo » 20.11.2009, 21:12:43

Hi,


Sobald die Ausgabe ein wenig mehr umfasst wie ein einzelnes Formular, muss ich ein extra Template anlegen welches im Placeholder transformiert wird. Oder nicht?

Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: Formular im Template

Beitrag von Screeze » 20.11.2009, 21:15:56

was meinst du mit "ein wenig mehr" ?
du kannst auch html und sonstige gerüste mit da reinpacken, du hast auch placeholder im formular zur verfügung, was brauchst du mehr?



alternativ kannst du auch ein extra template anlegen, dort einen placeholder definieren, und das formular manuell transformieren, und die rückgabe (sprich das html formular) dann in den placeholder setzen. (klingt kompliziterter als es ist)

Thalo
Beiträge: 257
Registriert: 10.08.2009, 16:56:52

Re: Formular im Template

Beitrag von Thalo » 20.11.2009, 21:25:55

Hi,
Screeze hat geschrieben:was meinst du mit "ein wenig mehr" ?
du kannst auch html und sonstige gerüste mit da reinpacken, du hast auch placeholder im formular zur verfügung, was brauchst du mehr?
Daran hab ich in der Tat nicht gedacht.

Screeze hat geschrieben: alternativ kannst du auch ein extra template anlegen, dort einen placeholder definieren, und das formular manuell transformieren, und die rückgabe (sprich das html formular) dann in den placeholder setzen. (klingt kompliziterter als es ist)
So hatte ich mir das auch vorgestellt. Denke werde es so umsetzen, sofern es keine bessere Möglichkeit gibt..

Benutzeravatar
dr.e.
Administrator
Beiträge: 4605
Registriert: 04.11.2007, 16:13:53

Re: Formular im Template

Beitrag von dr.e. » 21.11.2009, 11:12:18

Hallo Thalo,

die Formular- und Template-Taglib unterstützen das "TransformOnPlace"-Feature. Das bedeutet, dass du zur Ausgabe keinen weiteren Platzhalter brauchst, sondern einfach im Document-Controller das jeweilige Objekt anweisen kannst, sich selbst darzustellen. Im Falle des obigen Beispiels von Megger kannst du das wie folgt tun:

Code: Alles auswählen

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

// Template direkt ausgeben
$tmpl = $this->__getTemplate('test2');
$tmpl->transformOnPlace();
Möchtest du das Template in das Formular einsetzen und das Formular direkt ausgeben, so kannst du innerhalb des <html:form />-Tags ein <form:placeholder /> definieren und dort das Template einsetzen. Das geht so:

Template:

Code: Alles auswählen

<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:

Code: Alles auswählen

// Formular beziehen
$form = $this->__getForm('formular');

// Platzhalter füllen
if(...){
   $tmpl = $this->__getTemplate('test2');
   $form->setPlaceHolder('test2',$tmpl->transformTemplate());
}

// Formular direkt ausgeben
$form->transformOnPlace();
Ich hoffe das hilft weiter.
Viele Grüße,
Christian

Thalo
Beiträge: 257
Registriert: 10.08.2009, 16:56:52

Re: Formular im Template

Beitrag von Thalo » 21.11.2009, 19:05:14

Hi Doc,


Danke für deine Antwort. Ich denke das ist so weit klar. Das Template im Formular finde ich nicht so schick, da es meiner Meinung nach nicht semantisch wäre. :)

Benutzeravatar
dr.e.
Administrator
Beiträge: 4605
Registriert: 04.11.2007, 16:13:53

Re: Formular im Template

Beitrag von dr.e. » 21.11.2009, 22:40:58

Hallo Thalo,

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 benötigst du jedoch die aktuelle SVN-Version, die noch in diesem Jahr als stable erscheinen wird. Weitere Dokumentation dazu findest du unter http://adventure-php-framework.org/Seit ... 8-Listener. Im Thread ALPHA-Test Form Taglibs habe ich die Funktion ebenfalls kurz vorgestellt.
Viele Grüße,
Christian

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast