我正在爲我自己製作的新的自定義MVC框架設置一個簡單的路由系統。簡單的PHP路由
目前我的路由器類視圖的URL爲這樣:
www.example.com/controller/controller_action/some/other/params
所以,本質上......我一直保留的URI爲控制路由的前兩個部分。但是,如果我只想運行以下內容呢?
www.example.com/controller/some/other/params
......它會試圖運行默認控制器操作並將額外的參數發送給它?
這裏是簡單的路由器我使用:
\* --- htaccess --- *\
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?rt=$1 [L,QSA]
\* --- index.php --- *\
if (array_key_exists('rt',$_GET)) {
$path = $_GET['rt'];
$uri = explode('/',$this->path);
if(empty($uri[0])) {
$load->ctrl('home');
}
elseif(empty($uri[1])) {
$load->ctrl($uri[0]);
}
else {
$load->ctrl($uri[0],$uri[1]);
}
}
else {
$load->ctrl('index');
}
\* --- loader class --- *\
public function ctrl($ctrl,$action=null) {
$ctrl_name = 'Ctrl_'.ucfirst(strtolower($ctrl));
$ctrl_path = ABS_PATH . 'ctrl/' . strtolower($ctrl) . '.php';
if(file_exists($ctrl_path)) { require_once $ctrl_path;}
$ctrl = new $ctrl_name();
is_null($action) ? $action = "__default" : $action = strtolower($action);
$ctrl->$action();
}
我怎樣才能做到這一點?
您正在使用哪個MVC框架? – Sampson 2009-12-08 05:12:38
@Jonathan,在問題中提到,即時通訊使用自定義框架(爲了學習而學習)......因此,我可以選擇任何我想要的。我知道必須有一種簡單的方法來解決這個問題,我只是想念它...謝謝! – johnnietheblack 2009-12-08 05:14:00