2013-01-22 75 views
0

我不太確定這是否通過重寫URL完成,但我不知道如何相應標題。 這是我的問題。我目前正在研究一個網站項目,我正在使用MVC框架的抽象(主要是爲了學習框架)。 這是我的文件夾結構的樣子:在某個MVC框架中重寫URL?

/controller/ 
|--indexcontroller.php 

/myaccount/ 
|--/controller/ 
    |--indexcontroller.php 
|--index.php 

/globals/ 
|--framework.php 

/templates/ 

/options/ 
|--settings.php 
|--config-www.php.inc 

所以目前我使用自動加載器加載至極需要的類。在我的帳戶文件夾中的index.php繼承Framework類至極應該處理的類加載:

$urlparts = explode("/", $_SERVER['REQUEST_URI']); 
    $urlparts2 = explode("?", $urlparts[2]); 
    $class = str_replace(".php", "", $urlparts2[0]); 

    if ($class == "") { 

     $class = "index"; 
    } 

    $letters_first = substr($class, 0, 1); 
    $letters_last = substr($class, 1, strlen($class)); 

    $class = strtoupper($letters_first).$letters_last."Controller"; 

    if (class_exists($class)) { 

     $object = new $class(); 

    } else { 

     echo "Problem: class $class does not exist."; 
    } 

我目前所面對的問題是,我只能用「http://www.url.com/myaccount /「,這是從myaccount(這很好)從控制器文件夾中加載indexcontroller.php。但是我也希望能夠使用「http://www.url.com/myaccount/profile」,然後在myaccount控制器文件夾中調用「profilecontroller.php」。

我該怎麼做? URL重寫?還是我做的完全錯了?如果您需要更多信息,請告訴我。

在此先感謝。

回答

1

起初這可能有些壓倒性的,但如果你明白了,它會讓你的生活變得更輕鬆。

1)看看像symfony,codeigniter等現有的框架,看看他們如何完成路由。

2)嘗試通過composer重用這些「組件」(如路由表單symfony),所以你不必自己動手。

這樣:

  • 你不會把它寫自己所有。
  • 您使用的是熱的東西,就像作曲家:)
  • 您通過尋找其他框架

我希望這有助於一點:)實行學習。

+0

我會試試看。非常感謝。 – puelo