| | | | |
| |||||||
| PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen |
|
| | LinkBack | Themen-Optionen | Thema bewerten |
| | |
| PHP Code Flüsterer Registriert seit: 21.08.2005 Beiträge: 4682 PHP-Kenntnisse: Fortgeschritten | |
| | |
| Neuer Benutzer Registriert seit: 15.07.2010
Beiträge: 20
PHP-Kenntnisse: Anfänger ![]() | Hab mir jetzt alles auffindbare durchgelesen, wobei ich zugeben muss, manchen Ausführungen konnte ich noch nicht folgen. Auch noch nicht ganz klar ist mir, wie die Actions von Modulen in HMVC-Einheiten (über die URL?) gesteuert werden: Bisher schauen meine URLs so aus: www.example.org/controller/action. Diese URL könnte also z.B. www.example.com/script/showAll lauten, womit das Template 'script.php' geladen und geparst wird, und alle vorhandenen Scripte angezeigt werden. Auf genannter Seite binde ich nun über Template-Tags ein Newsletter-Modul ein. Ein Benutzer trägt sich ein und sendet das Form ab, es wird also Newsletter->register() aufgerufen. Macht es Sinn, die URL nun wie folgt zu haben: www.example.com/script/newsletter/register? Bei 3 Angaben weiss mein Router, dass die Zweite das Modul sein muss. 'script' brauche ich ja nach wie vor, um das richtige Layout anzuzeigen. |
| | |
| | |
| Moderator und Wett-König | Hallo Scoops, du stößt an dieser Stellen genau auf das Problem derartiger URL-Layouts: es kann immer nur eine Hierarchie abgebildet werden und kein Baum von HMVC-Einheiten. Möchtest du einen solchen - sprich mehrere Templates pro Seite - haben, erfolgt die Steuerung über URL-Parameter und die Baum-Struktur selbst. Ein Baum-Knoten ist dabei für die Darstellung des Registrierungs-Formulars zuständig, stellt dieses dar und verarbeitet die Eingaben. Dabei muss die Action und die Methode der Action überhaupt nicht in der URL stehen, sondern diese kann auch http://www.example.com/newsletter-registration heißen. Wichtig bei einem HMVC-Ansatz ist ebenso, dass du nur diejenige Teile in der URL abbildest, die auch für den Aufbau des Baumes notwendig sind. Was innerhalb des Baumes passiert ist zunächst nach aussen oft gleich (ein Menü, ein Header, ein Content-Bereich) und in einem der dreien ist das Modul eingebunden. Schön zu sehen ist diese Art der Einbindung beispielsweise auf der Seite Kontakt :: Adventure PHP Framework (APF). Hier wird einfach das Kontakt-Modul auf der Seite "034-Kontakt" eingebunden ohne dass ich die komplette Baum-Logik und den Baum-Zustand in der URL transportieren muss. Intern kümmerst sich dann der entsprechende Controller des MVC-Knotens um die Verarbeitung des Moduls solange dieses im Baum hängt. Ich hoffe, das hilft dir einen Schritt weiter.
__________________ 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! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| | |
| | |
| Neuer Benutzer Registriert seit: 15.07.2010
Beiträge: 20
PHP-Kenntnisse: Anfänger ![]() | Danke Doc ![]() Die Module binden sich also nicht entsprechend der URL ein, sondern über das Template. Dabei ist es aus Sicht der URL einzig wichtig, dass ich die URL zum dem Controller route, der dann das entsprechende Template parst. Richtig? Dann sollte dieses Diagramm die gegenseitigen Aufrufe als Schritte korrekt darstellen: http://img257.imageshack.us/img257/1...chitecture.jpg Dann wäre mir nur noch eine Sache unklar: wie bindet der HauptController nach dem Parsen des Templates den/die ModulController ein, sodass diese von sich aus auf Benutzereingaben reagieren können? Z.B. der KontaktController auf das Absenden des Formulare. Genau so wie der Front Controller den über die URL angeforderten Controller? Könnte so nicht der HauptController versehentlich auf eine Benutzereingabe reagieren, die eigentlich für ein Modul gedacht waren? Oder wahrscheinlicher: bei zwei eingebundenen Pagination-Modulen würde eine Benutzereingabe ja beide Module beeinflussen. |
| | |
| | ||||||
| Moderator und Wett-König | Hallo Scoops, Zitat:
Es kann natürlich Elemente (lösen wir uns mal vom Begriff Template und Modul) geben, die basierend auf den Informationen der URL eingebunden oder eben nicht eingebunden werden. Grundsätzlich ist es jedoch in einer HMVC-Umgebung nicht möglich und auch nicht notwendig, alle Elemente in der URL abzubilden. Statische Elemente sind auch durch statische Einbindung ausgezeichnet, im Inhalte-Bereich einer Seite - oder auch an beliebigen anderen Stellen - können dynamische Elemente dann an Hand der URL/Session/Cookies/... eingebunden sein.Zitat:
Zitat:
Zitat:
Beim Kontakt-Formular passiert im Grunde nichts spannendes, denn das Modul wird einfach - sofern per URL angefordert - immer in den Baum eingehangen und vom Page-Controller ausgeführt. Im Modul entscheidest du dann, was mit den Nutzer-Eingaben passieren soll. Das ist auch der große Vorteil, dass du dir um die umliegenden Elemente keine Gedanken (in Form von Code) machen brauchst. Zitat:
Nebenbei gefragt: hast du das APF und dessen HMVC-Mechanismus schon mal genutzt?
__________________ 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! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |||||
| | |
|
| Themen-Optionen | |
| Thema bewerten | |
|
|
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Probleme mit MIB's | Puccini | Server, Hosting und Workstations | 4 | 03.05.2010 10:48 |
| index aufbau - wie macht man es richtig? | setech | Software-Design | 12 | 03.01.2010 19:58 |
| [Erledigt] PHP in Console | lithium | Server, Hosting und Workstations | 16 | 25.06.2009 00:52 |
| [Erledigt] Module SW Design (Standard vs. Customized vs. Wartbarkeit mit SVN) | robotron | Software-Design | 2 | 18.05.2009 15:20 |
| Module in PHP Anwendung optional anbieten | goofreezer | PHP Tipps 2008 | 8 | 08.07.2008 19:41 |
| Zugriffsrechte fuer externe Module | Lumio | PHP-Fortgeschrittene | 4 | 05.09.2006 22:32 |
| Module im Eigenbau (Problem mit includes) | ChewyF5 | PHP-Fortgeschrittene | 3 | 27.07.2005 09:35 |
| [Erledigt] phpMyAdmin Fehler | Datenbanken | 1 | 24.04.2005 11:33 | |
| Modularer Aufbau von cms! | PHP-Fortgeschrittene | 2 | 26.01.2005 16:54 | |