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!
Ähnliche Beiträge:Dieser Artikel wurde von Simon verfasst.
Gelesen: 942x heute: 2x
Dieser Artikel wurde am Samstag, Dezember 27th, 2008 um 16:25 in den Kategorien Codeschnipsel geschrieben. Du kannst die Kommentare über den Feed (RSS 2.0) beobachten. Du kannst eine Antwort hinterlassen, oder einen Trackback von deiner Seite setzen.



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!