[MVC] Controller URL-Mapping

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • [MVC] Controller URL-Mapping

    Hallo Gemeinde,

    ich bin gerade dabei mir ein kleines MVC-Framework zu schreiben, das soll an sich total unspektakulär sein. Jedoch habe ich da eine Anforderung an die Urls. Die Urls sollen so gestaltet werden:

    /module/controller/action/var1/value1/var2/value2/varN/valueN

    so nun ist meine Frage wie kann ich das realisieren das mein Controller solche Urls versteht. Ich müsste mir ja dazu ein eigenes URL-Mapping schreiben und einen eigenen Request/Response. Um $_POST / $_GET zu bedienen.

    Kann mir da jemand einen Tipp geben, wie man sowas realisieren kann? Mir fehtl da etwas der Ansatz.

    Das ganze soll ohne Mod_Rewrite gelöst werden.

    Kann mir jemand mal einen kleinen Denkanstoß geben?

    so long
    jd
    Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert, der letzte Netzknoten kommerzialisiert, die letzte Newsgroup moderiert wird, werdet Ihr merken, dass man mit Geld allein nicht programmieren kann.
  • Hmm ohne mod rewrite ... :o

    Mir würde folgendes dirty work around einfallen:

    via reflection api alle Methoden usw. von deiner Klasse auslesen,

    Dann viele nette Ordner erstellen welche alle eine index file haben welche dann quasi den framework aufrufen ,...



    Naaajaa, guut also ich wüsste nicht wie man das sonst lösen soll, da php ja nunmal nach dem parsen der URL aufgerufen wird...

    Wieso eigentlich ohne mod_rewrite?



    Ich hoffe ich liege mit meiner Aussage falsch, weil an einer Implementierung ohne mod_rewrite oder ähnlicher Dinge wäre ich auch interessiert :love:
  • Also das einzige was ich mit Mod_Rewrite machen möchte, ist das alle Anfragen über die Bootstrap Datei laufen:

    Quellcode

    1. RewriteEngine on
    2. RewriteRule !\.(js|ico|gif|jpg|png|css|txt)$ index.php


    so, den rest Soll jetzt Quasi der Controller machen, bzw der Router.

    Vom Prinzip her, muss ich ja die URL auseinander nehmen, und dann richtig routen... ist etwas leichter gesagt als getan, habe mir das total easy vorgestellt. Jedoch habe ich da irgendwo nen Denkfehler, den ich nicht finde...

    Also ich wüsste schonmal wie ich die Url zerlegen kann, das ist nicht weiter schwer. Jedoch muss ich den Request abfangen und PATH_INFO und solche sachen selber neu zusammen bauen.
    den /module/controller/action/var1/1

    ist ja ein Redirect.

    sagt mir jedenfalls

    Quellcode

    1. <?php
    2. print_r($HTTP_SERVER_VARS);
    3. ?>


    Also mir fehlt komplett der Ansatz...
    Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert, der letzte Netzknoten kommerzialisiert, die letzte Newsgroup moderiert wird, werdet Ihr merken, dass man mit Geld allein nicht programmieren kann.
  • Ohne Mod Rewrite ? :wacko:

    Meiner Meinung nach benötigst du mod_rewrite um alle Anfragen erstmal abzufangen und an den Front Controller zu routen.

    Der kann dann wiederum die Anfrage an weitere Sub Controller Routen der deine URL auseinander nimmt und dann alles dem angegebenen Action Controller übergibt.

    Edit:
    sonst schau dir doch einfach das ZF an:
    framework.zend.com/manual/de/zend.controller.html
  • vince schrieb:

    sonst schau dir doch einfach das ZF an:
    framework.zend.com/manual/de/zend.controller.html
    Genau diese Empfehlung hätte ich da auch für dich - oder halt andere Frameworks. Ohne mod_rewrite ist es auf Apache-Servern meines Wissens nicht möglich, derartige Anfragen umzusetzen. Framworks benutzen die von dir vorgeschlagene Methode, in der alle Anfragen auf eine Datei umgeleitet werden.