URL dynamisch zusammenbauen (mod_rewrite an/aus)
Hier eine Klassenmethode aus meinem Framework, mit der man URLs ausgeben lassen kann, ohne zu wissen, ob mod_rewrite akzeptiert werden muss oder nicht.
Man übergibt einfach folgende Parameter:
- $controller: Der Controllername (oft auch Modul genannt) der Ziel-URL
- $action: Der Aktionsname der Ziel-URL
- $additional_params: Weitere Parameter wie z.B. page=4 als array
Code
public static function getInternalURL($controller = null, $action = null, array $additional_params = array()) { if($controller === null) { $url = FW_Config::getInstance()->get("www_root"); } else { $mod_rewrite = (FW_Config::getInstance()->get("mod_rewrite") == "1") ? true : false; if($mod_rewrite) { $url = FW_Config::getInstance()->get("www_root")."/".$controller."/".(($action !== null) ? $action.".html" : ""); } else { $url = FW_Config::getInstance()->get("www_root")."/?module=".$controller.(($action !== null) ? "&action=".$action : ""); } if(count($additional_params) > 0) { if($mod_rewrite) { $url .= "?"; } else { $url .= "&"; } $counter = 1; foreach($additional_params as $params) { foreach($params as $paramname => $paramval) { if($counter != 1) { $url .= "&"; } $url .= $paramname."=".$paramval; } $counter++; } } } return $url; }
Anwendungsbeispiel
echo FW_Tools::getInternalURL("index, "show_news", array(array("page" => 5))); //gibt abhängig von meiner mod_rewrite-Einstellung in meiner config.ini das aus: //mod_rewrite an: http://localhost/index/show_news.html?page=5 //mod_rewrite aus: http://localhost/?controller=index&action=show_news&page=5
Viel Spass damit!
hmm pack doch einfach mal den aktuellen stand deines frameworks als download hierein 😉 vielleicht entwickelt es sich dann in verschiedene richtungen 😉
Jo, das mach ich… Muss nur noch ein bisschen aufräumen und kommentieren
Heute Abend gibts dann hier die aktuelle Version zum Download, leider ohne Beispielprojekt. (Ich hätte da zwar eins, aber das soll eigentlich noch geheim bleiben :))
Simon
veröffentlichst das ganze dann als open source?
Nein, ich muss noch schauen, was für eine Lizenz ich verwende
Die Hinweise auf den Autor müssen jedenfalls erhalten bleiben
Konnte zwar noch nicht alles kommenteiren, aber hier ist mal die neueste Version
http://www.net-developers.de/2008/12/27/aktuelle-version-des-mvc-frameworks-zum-download/
Hy
Keine schlechte Idee vorallem wenn man ein gröseres Projekt irgendwann mal auf Mod_rewrite umbeuane will.
Würde es aber vieleicht noch erweitern, so das man mehr Möchlichkeiten hat.
zb hätte ich meine URL lieber so gemacht.
//mod_rewrite an: http://localhost/bereich/unterbereich/modul.html?page=5
//mod_rewrite aus: http://localhost/?content=bereich/unterbreich&modul=news&page=5
Hmm
Das wäre allerdings schwererer in der Umsetzung.
Mal schauen, ob das irgendwann mal ins FW mit eingebaut wird.
Aber danke für den Vorschlag!