URL-Rewriting wie in Rails

Im Entwickler-Forum können Implementierungsdetails sowie Alternativen der Umsetzung diskutiert werden. // Here, developers can discuss implementation details of features of their projects.
Benutzeravatar
dr.e.
Administrator
Beiträge: 4555
Registriert: 04.11.2007, 16:13:53

Re: URL-Rewriting wie in Rails

Beitrag von dr.e. » 21.05.2010, 09:44:43

Hallo Lutz,

sofern du wirklich Dynamik haben willst, musst du dich komplett vom URL-Design des APF verabschieden und zusätzlich noch eine Konvention über die Ablage der Actions treffen. Das bedeutet dann:
  • Jede Applikation erhält einen eindeutigen Kenner.
  • Der Applikations-Kenner steckt immer zuerst in der URL (z.B. /guestbook) und ist Teil des Namespaces (z.B. /apps/components/guestbook).
  • Das Mapping der Actions findet über den Namen des Applikations-Kenners und einer weiteren Konvention statt. Die Front-Controller-Action heißt dann beispielsweise GuestbookAction und liegt unter components::guestbook::actions.
  • Das Parameter-Papping müsste dann konsequenterweise im Model der Applikation, das dann GuestbookModel unter components::guestbook::model liegt, stattfinden. Die Überlegung wäre hier, eine Liste der Parameter an den Konstruktor zu übergeben oder ein weiteres konfiguratives Mapping auf Setter des Models zu definieren.
Das alles lässt sich wunderbar in einem Input-Filter formulieren und man könnte das z.B. auch mit einer Möglichkeit kombinieren, den anzuzeigenden View mit dem zweiten Parameter nach dem Applikatons-Kenner in der URL zu bestimmen. Hierdurch geht jedoch dann die Flexibilität der HMVC-Implementierung des APF tatsächlich vor die Hunde, wenn man nicht den Riegel vorschiebt, dass mit diesem Parameter nur ein spezieller View innerhalb des HMVC-Baumes ausgetauscht wird (z.B. mit dem <generic:importdesign />-Tag). Sofern man das Konzept nämlich stringent weiter verfolgt, ist man bei einem One-View-Konzept angekommen und frickelt sich wieder Hilfs-Konstrukte und Workarounds für die Erstellung von komplexen GUI-Strukturen.

Ich würde deshalb versuchen, das über einen Input-Filter in Kombination mit der Möglichkeit des Austausches eines Views umzusetzen, denn dann kann man die Vorteile beider Welten vereinen. Sofern du für die Umsetzung ein Beispiel haben möchtest - wie ich mir das genau vorstelle - kann ich dir gerne ein Beispiel liefern.

Nachtrag: ich habe unter http://wiki.adventure-php-framework.org ... RL_Mapping begonnen eine solche Umsetzung zu beschreiben. Lokal läuft das Mapping des Moduls, der Action und des Models auch schon. Werde das die Tage vervollständigen und die Sourcen posten.
Viele Grüße,
Christian

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast