html_taglib_placeholder gesucht

Alle Fragen zur Installation und zu den erhältlichen Versionen sind hier an der richtigen Adresse. // All questions on installing the APF.
Antworten
wal
Beiträge: 10
Registriert: 04.08.2008, 08:26:29

html_taglib_placeholder gesucht

Beitrag von wal » 28.08.2008, 11:57:13

Hallo dr.e

ich versuche gerade eine Seite zu erstellen, die eine variable Anzahl von Eingabetextfeldern haben soll, und zwar auch an einer bestimmten Stelle. Mit placeholder scheint es nicht zu gehen. Dabei bin ich auf die Datei item_taglib_placeholder.php gestossen mit der Zeile:

class item_taglib_placeholder extends html_taglib_placeholder


aber die Datei html_taglib_placeholder.php finde ich nirgends, wo ist denn diese Klassendefinition drin ?


MfG
Cilia

P.S. danke für die Antwort mit dem frontcontroller

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

Re: html_taglib_placeholder gesucht

Beitrag von dr.e. » 28.08.2008, 12:25:48

Hallo Cilia,

die Klasse html_taglib_placeholder ist in der Datei core/pagecontroller/pagecontroller.php definiert. Siehe http://adventurephpfra.svn.sourceforge. ... iew=markup, Zeile 1911.
ich versuche gerade eine Seite zu erstellen, die eine variable Anzahl von Eingabetextfeldern haben soll, und zwar auch an einer bestimmten Stelle.
Ich kenne dein Vorhaben nicht, ich persönlich würde jedoch hier weiterhin die Formular-Taglibs verwenden, da diese bereits Funktionen wie Prefilling und Validierung enthalten. Möchtest du zu einem Formular weitere Felder hinzufügen, kannst du die Methoden addFormElement() und addFormContent() verwenden. Mit diesen lässt sich ein Formular quasi im Controller on-the-fly zusammenbauen. Da ich dieses Feature selbst recht sporadisch genutzt habe, kann es sein, dass die Implementierung nicht optimal ist. Die Relevanten Einträge in der API-Doku findest du unter http://adventure-php-framework.org/fron ... 1e5eb92a7a und http://adventure-php-framework.org/fron ... c43b9b5225. Solltest du ein konkretes Beispiel brauchen, meld dich einfach.

P.S. danke für die Antwort mit dem frontcontroller
Gerne! :geek:
Viele Grüße,
Christian

phpdummi
Beiträge: 18
Registriert: 23.11.2007, 16:15:15

Re: html_taglib_placeholder gesucht

Beitrag von phpdummi » 28.08.2008, 20:32:22

Hallo Cilia,

verstehe ich dich richtig: Du möchtest im Template die Anzahl der Eingabefelder definieren?

Benutzeravatar
fliegermichl
Beiträge: 114
Registriert: 29.01.2008, 11:51:45
Wohnort: Echzell

Re: html_taglib_placeholder gesucht

Beitrag von fliegermichl » 29.08.2008, 10:35:32

Hallo zusammen,

es geht immer noch um unser Planerprojekt.

Wir haben in der roofdef.php die möglichen Dachtypen definiert.
Jeder Dachtyp benötigt eine gewisse Anzahl an Werten, damit das Dach berechnet werden kann.
Dabei sind es aber unterschiedlich viele Werte.

In der aktuellen (nicht Framework Version) werden die Formularfelder in einer Schleife ausgegeben.
ich stelle mir das so vor, daß man ein Template für ein Eingabefeld erstellt und
im Haupttemplate dieses Input-Template mit variabler Anzahl einbindet.

Viele Grüße
Michl

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

Re: html_taglib_placeholder gesucht

Beitrag von dr.e. » 30.08.2008, 11:21:14

Hallo fliegermichl,
es geht immer noch um unser Planerprojekt.
Ahh, ihr kennt euch also? :?
In der aktuellen (nicht Framework Version) werden die Formularfelder in einer Schleife ausgegeben.
ich stelle mir das so vor, daß man ein Template für ein Eingabefeld erstellt und
im Haupttemplate dieses Input-Template mit variabler Anzahl einbindet.
Unter dieser Voraussetzung würde ich auch dazu tendieren, für jeden Typ einen eigenen "kleinen" View zu definieren, der je nach Typ eingebaut bzw. angezeigt wird. Damit ist sowohl die Formularverarbeitung als auch die Anzeige-Logik für die einzelnen Views einfacher zu implementieren.
Möchtest du bereits im Framework enthaltene Komponenten nutzen, so ist eine elegante Lösung hier den FrontController einzusetzen, der ein Applikationsmodel mit dem entsprechenden Wert befüllt. Diese Informationen werden dann vom <fcon:importdesign />-Tag genutzt, jeweils den korrekten View für den gewünschten Typen darzustellen. Die Berechnung der Daten würde dabei eine gemeinsame Business-Komponente übernehmen, die von jedem View genutzt werden kann. Weiterhin würde ich für die Berechnungen ein Domain-Objekt für die Maße des Typs definieren und dem Objekt jeweils seinen Typ mitgeben, so dass die Businessschicht die Berechnungen entsprechend durchführen kann.

Soll ich dazu mal ein Stück Pseudocode posten?

Wenn du dich entscheidest, die Einbindung der Typ-Views selbst implementieren zu wollen - das steht dir ja frei und du hast auch die Möglichkeit dazu - dann kannst du auch eine neue TagLib erstellen, die genau diese Funktion ausführt. Hier kannst du dann auf die Informationen deiner Software zurückgreifen, die du ohnehin schon vorhälst.


Nachtrag:
Es gibt eigentlich noch eine einfachere Methode, die Typ-Views einzubinden: den Tag <core:importdesign />. Bei diesem kannst du den pagepart-Parameter nutzen und damit du per URL-Parameter entscheiden, welches Template inkludiert wird. Hierzu einfach im Haupt-Template ein

Code: Alles auswählen

<core:importdesign namespace="sites::roofcalculator::pres::templates::types" template="[type = start]" incparam="type" />
einfügen. :)
Zuletzt geändert von dr.e. am 30.08.2008, 11:27:34, insgesamt 1-mal geändert.
Grund: Auch einfachere Lösung möglich...
Viele Grüße,
Christian

wal
Beiträge: 10
Registriert: 04.08.2008, 08:26:29

Re: html_taglib_placeholder gesucht

Beitrag von wal » 01.09.2008, 10:38:07

Hallo Dr. e,


das mit den variablen Eingabefeldern funktioniert in diesem Fall problemlos mit addFormContent und addFormElemnt, aber danke für den Hinweis auf andere Methoden, vielleicht brauche ich den FrontController beim nächstenmal. Den Sourcecode vom Pagecontroller gehe ich zur Zeit auch durch. Hinterher weiß ich jetzt, ich hätte mit ihm anfangen sollen, statt alles von hinten bei den taglibs aufdröseln zu wollen.

Keine Sorge, die nächste Anfrage kommt bestimmt.


MfG
wal :)

wal
Beiträge: 10
Registriert: 04.08.2008, 08:26:29

Re: html_taglib_placeholder gesucht

Beitrag von wal » 02.09.2008, 12:11:51

Hallo Dr.e.

damit ich endlich eine variable Anzahl von Eingabefeldern an einer ganz bestimmten Stelle einfügen kann,
habe ich die Klasse class html_taglib_form um zwei Funktionen erweitert:

addFormElementAtPlaceholder und addFormContentAtPlaceholder

Die zwei Funktionen addFormElement und addFormContent hängen immer nur an den Content der Form hinten dran.
Die zwei neuen Funktionen fügen den neuen Inhalt unmittelbar vor der Objektid des Platzhalters in die Contentvariable der Form ein.



MfG
wal
html_taglib_form_sds.php.gz
(3.58 KiB) 128-mal heruntergeladen

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

Re: html_taglib_placeholder gesucht

Beitrag von dr.e. » 02.09.2008, 21:32:10

Hallo wal,

interessante Erweiterung. Wie weiter oben schon angedeutet, ist die Implementierung der beiden Methoden addFormElement() und addFormContent() sicher nicht ideal.

Kannst du mir noch ein Implementierungsbeispiel geben, mit dem ich die Funktion lokal nachvollziehen kann? Sollte das für das Release interessant sein - wovon ich auf Grund der Implementierung ausgehe -, nehme ich es gerne auf. :)
Viele Grüße,
Christian

wal
Beiträge: 10
Registriert: 04.08.2008, 08:26:29

Re: html_taglib_placeholder gesucht

Beitrag von wal » 03.09.2008, 12:30:45

Hallo dr.e,
anbei ein kleines Beispiel, habe es nur ganz kurz getestet, ich hoffe, ich habe alles reingepackt, was dazugehört

mfg
wal
Dateianhänge
example.tar
(40 KiB) 127-mal heruntergeladen

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

Re: html_taglib_placeholder gesucht

Beitrag von dr.e. » 03.09.2008, 13:14:10

Hallo wal,

danke für das Beispiel, die Idee ist gut und bietet eine gute Erweiterung zu den Methoden addFormElement() und addFormContent(). Mein Vorschlag zur Implemenierung und Aufnahme in das nächste Relase wäre jedoch, eine neue Form-TagLib und folgende Methoden anzubieten:
  • addFormContentBeforeMarker($MarkerName,$Content)
  • addFormContentAfterMarker($MarkerName,$Content)
  • addFormElementBeforeMarker($MarkerName,$ElementType)
  • addFormElementAfterMarker($MarkerName,$ElementType)
Im Template würde dann ein

Code: Alles auswählen

<html:form name="...">
   ...
   <form:marker name="test" />
   ...
</html:form>
im Controller ein

Code: Alles auswählen

...
$Form->addFormElementBeforeMarker('test','form:text');
$Form->addFormElementAfterMarker('test','form:text');
$Form->addFormContentBeforeMarker('test','<br /><br />');
$Form->addFormContentAfterMarker('test','<br /><br />');
...
stehen. Der Marker ist dabei quasi nur ein Platzhalter-Objekt, das bei der Transformation einfach einen Leerstring zurück gibt und nicht weiter verwendet werden kann.

Gib mit bitte Feedback, ob das deine Anforderungen erfüllt, dann baue ich das in das 1.7-RC2-Release mit ein, das in den nächsten Tagen (wahrscheinlich am Wochenende) erscheinen wird. Danke!

Ich werde dir zu den von dir gelieferten Dateien noch ein paar Tipps zur Implementierung heben. Dazu eröffne ich einen eigenen Thread im "Entwicklung"-Forum. Schau einfach mal wieder vorbei. :)
Viele Grüße,
Christian

wal
Beiträge: 10
Registriert: 04.08.2008, 08:26:29

Re: html_taglib_placeholder gesucht

Beitrag von wal » 04.09.2008, 08:36:20

Hallo dr.e,

das neue Release gibt's schon so bald ? cool. Die Namensbezeichnung ist besser, ursprünglich hatte die Funktion den Placeholder wirklich ersetzt, bis mir aufging, daß ich den Placeholder vielleicht noch ein zweites mal gebrauchen könnte, daraufhin wurde davor eingefügt, dann passte aber natürlich der Name nicht mehr..... und hinterher wundert sich ein anderer anwender über die komischen Bezeichnungen. das neue release werde ich natürlich gleich installieren, sobald es da ist.

mfg
wal

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

Re: html_taglib_placeholder gesucht

Beitrag von dr.e. » 06.09.2008, 08:07:06

Hallo wal,

ich habe die Implementierung und den Test der neuen Methoden nun abgeschlossen. Die Änderungen sind im trunk des SVN verfügbar, kannst die neuen Dateien einfach per svn co auschecken. Die Verwendung der neuen Methoden findest du im obigen Post.

Solltest du mit der Umsetzung zufrieden sein, gehe ich die Dokumentation und das neue Release (1.7-RC2) an.

Noch ein schönes Wochenende! :)

//EDIT: die Änderungen sind auch unter http://adventurephpfra.svn.sourceforge. ... 1=20&r2=41 zu finden.
Viele Grüße,
Christian

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

Re: html_taglib_placeholder gesucht

Beitrag von dr.e. » 09.09.2008, 16:46:19

Hallo wal,

bei ausführlichen Anwendungstests habe ich festgestellt, dass die API an dieser Stelle noch etwas ungünstig ist. Grund: die Erstellung der Form-Elemente funktioniert, Features wie Prefilling oder Validierung nicht. Grund ist, dass zum Zeitpunkt der Erstellung der Name des Feldes noch nicht bekannt ist. Ich werde dies in einer dritten Option (Liste von Attributen) noch möglich machen und die Änderung entsprechend zur Verfügung stellen.

Ich melde mich Ende der Woche mit einem neuen Stand.
Viele Grüße,
Christian

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

Re: html_taglib_placeholder gesucht

Beitrag von dr.e. » 29.09.2008, 23:02:54

Hallo wal,

da ich in den letzten beiden Wochen im Urlaub war, hier neues von mir. Da zum Release-Datum des 1.7-RC2 die in diesem Thread diskutierten Änderungen bereits abgeschlossen waren, habe ich diese auch schon in das Release 1.7-RC2 aufgenommen, es kann also losgelegt werden. :)

Die Dokumentation der neuen Methoden und Tags findest du unter http://adventure-php-framework.org/Seit ... -Formulare, die API-Dokumentation unter http://adventure-php-framework.org/fron ... _form.html

Würde mich freuen, von dir zu hören, ob die Änderungen der Form-API für deine Zwecke ausreichend gewesen sind.
Viele Grüße,
Christian

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast