| | | | |
| |||||||
| Software-Design Diskussionen auf Profi-Niveau: PHP Lösungen auf konzeptioneller Ebene |
|
| | LinkBack | Themen-Optionen | Thema bewerten |
| | |
| PHP Code Flüsterer Registriert seit: 21.08.2005 Beiträge: 4682 PHP-Kenntnisse: Fortgeschritten | |
| | |
| Moderator und Wett-König | Plain HTML ist Blödsinn, da verzichtest du auf wichtige Features und programmierst diese mit Unmengen Template-Logik nach. Das hat weder etwas mit OO zu tun, noch ist das in nicht-Hobby-Projekten rentabel.
__________________ Viele Grüße, Dr.E. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. Think about software design before you start to write code! 2. Discuss and review it together with experts! 3. Choose good tools (-> Adventure PHP Framework (APF))! 4. Write clean and reusable software only! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| | |
| | ||
| Erfahrener Benutzer Registriert seit: 30.07.2008
Beiträge: 1.129
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() | Zitat:
Das, was das APF hier anbietet: Kontaktformular-Tutorial :: Adventure PHP Framework (APF) Ist doch im Prinzip nichts weiter als die Validierung und Ausgabe des Formulars in einem Stück Code.. Da könnte man auch das Formular als eigenes Objekt mit allen Validierungen und was dazu gehört, instanziieren und die HTML-Ausgabe per Hand schreiben. Bei der Ausgabe gäbe es kaum einen Unterschied zu Deiner Lösung, außer, dass Du alles in spezielle Tags verpackst, die noch etwas Arbeit abnehmen.. | |
| | |
| | |
| Moderator und Wett-König | Hallo Lenki, die Diskussion ging vor deinem Post genu um das Thema Abstraktion und Abbildung von komplexeren Strukturen. Richtig ungemütlich wird es bei Multi-Selekt-Felder mit Gruppen. Hier muss der Provider eine Hierarchie von Daten verwalten und der Decorator auch speichern können. Letzterer ist eigentlich kein Decorator, denn ein solcher ist zur Präsentation eines Objekts gedacht, nicht zur Persistenz. Auch die Verarbeitung von Validierungs-Fehlern und Filter-Mechanismen von Formular-Elementen zusammen mit einer generischen Datenquelle ist nicht besonders handlich zu implementieren. Ich verfechte deshalb den Ansatz des APF, dass ein Formular nichts anderes als ein Template bestehend aus Funktions-sensiblen Tags ist, die für dich Filterung, Presetting, Validierung etc. übernehmen und ebenfalls als Datenquelle und -Senke fungieren können. Die letzten beiden Aspekte sind im MVC-Pattern IMHO jedoch Aufgabe eines Controllers, der eine Formular-Repräsentation in ein Domänen-Objekt oder Model transfomiert und zur Persistenz bzw. weiteren Verarbeitung freigibt. Weiterer Vorteil des Ansatzes des APF ist, dass die Formatierung nicht umständlich und sogar krankhaft mit Dekoratoren o.ä. implementiert werden muss, sondern es reicht, ein Formular-Feld in einem Formular zu platzieren und per CSS zu formatieren. Bei komplexeren Formularen kann dieses auch ganz einfach dynamisch erzeugt werden, sprich es ist mit demselben Konzept möglich, Formulare zur Laufzeit im Controller zu generieren und zu verarbeiten. Alle diese Funktionen hat das APF-Form-Tag schon an Board. Ich leg dir deshalb ans Herz, dir die Umsetzung der Formular-Integration unter Formulare (ab Version 1.11) :: Adventure PHP Framework (APF) einmal durchzulesen und das für deinen Anwendungsfall durchzuspielen. Ich bin sicher, das ist deutlich einfacher zu handhaben und viel einfacher zu skalieren als der von dir gedachte Ansatz.
__________________ Viele Grüße, Dr.E. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. Think about software design before you start to write code! 2. Discuss and review it together with experts! 3. Choose good tools (-> Adventure PHP Framework (APF))! 4. Write clean and reusable software only! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| | |
| | |
| Moderator und Wett-König | Hallo nikosch, in der Version 1.11 wurde das Konzept der Validatoren und Filter auf das Observer-Pattern umgestellt. D.h. du registrierst per Tag einen Listener (Validator oder Filter) auf ein Form-Control. Mit weiteren Tags kannst du die Validierungs-Meldungen ausgeben lassen, die seit dem 1.12 (aktuell RC1) auch spezielle Listener (also die Unterscheidung, ob ein Feld gefüllt ist und ob es eine valide E-Mail enthält). Das binding funktioniert über die Referenz auf das DOM-Element (Name des Elements). In deinem Beispiel ist das das Feld email. Hast du also ein Form-Element mit dem Namen "email", so kannst du in einem Filter (<form:addfilter />) oder einem Validator (<form:addvalidator />) das Control mit dem control-Attribut ansprechen. Intern wird beim observe-Event (also dem Einhängen des Validators/Filters) das DOM-Element mit dem angegebenen Namen gesucht, der Validator/Filter erzeugt und an das Objekt gehangen. Der Trigger ist der angegebene Button, der ebenfalls im DOM-Baum über den Namen des Buttons referenziert wird (button-Attribut). Ein Validator/Filter wird also nur ausgeführt, wenn der Trigger ausgelöst ist. Hierzu hat jeder Filter/Validator eine isActive()-Methode, die nur dann true zurückgibt, wenn das auslösende Ereignis auch stattgefunden hat. In der Standard-Implementierung ist das Ereignis der Button-Klick, möchtest du als Entwickler ein eigenes nutzen, kannst du das gerne in einem eigenen Validator/Filter durch Überschreiben der Methode so tun. Das Konstrukt Code: <form:listener control="email"> <div class="error-container"> </form:listener> Code: <form:error>
<div class="error-container">
</form:error>
<form:listener control="email">...</form:listener>
...
<form:error>
</div>
</form:error>
PHP-Code: PHP-Code: Beantwortet das deine Frage?
__________________ Viele Grüße, Dr.E. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. Think about software design before you start to write code! 2. Discuss and review it together with experts! 3. Choose good tools (-> Adventure PHP Framework (APF))! 4. Write clean and reusable software only! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| | |
| | |
| Benutzer Registriert seit: 14.01.2010
Beiträge: 69
PHP-Kenntnisse: Fortgeschritten ![]() | Hallo zusammen, auch wenn das Thema jetzt schon ein bisschen älter ist, so beschäftigt es mich immernoch. Zur Zeit habe ich alles nochmal über den Haufen geschmissen und gehe das ganze nochmal neu an. Dabei versuche ich das ganze mal unter test-first zu implementieren in der Hoffnung, dass das ein bisschen zu einer ordentlichen Struktur beiträgt (ist in der Hinsicht ein bisschen ein Experiment). Hier verfolge ich aber weiterhin den Ansatz mit den Knoten, den ich in meinem letzten Post beschrieben hatte, und bin bisher noch recht zuversichtlich, dass das klappen wird. Klares Ziel ist natürlich, auch sauber so Sachen wir Radio-Button-Groups abzubilden und an Datenquellen zu binden, trotzdem aber noch "simple" Formulare auf möglichst einfache Weise bereitzustellen. Ich halte euch auf dem Laufenden, vielleicht zeichne ich die Tage mal ein Klassendiagramm. |
| | |
|
| Themen-Optionen | |
| Thema bewerten | |
|
|
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| POST form self PHP und direkt form Daten in URL übergeben | Rutor | PHP Tipps 2010 | 0 | 20.02.2010 17:56 |
| Daten in HTML form aus einer Query anzeigen | PHP Tipps 2005 | 1 | 15.02.2005 21:03 | |
| Übergabe der Daten aus einer Form und übernahme in MySql | PHP Tipps 2004 | 5 | 16.07.2004 20:14 | |
| Besucher kamen über folgende Suchanfragen bei Google auf diese Seite |
| übernahme formelemente php, persistenz und dekorator |