我想制作一个小型的Web应用程序,我不知道该怎么做。 我想要做的是将每个请求发送到正确的控制器。 CodeIgniter如何做到这一点。
因此,如果用户要求domain.com/video/details 我希望我的bootstrap(index?)文件将他发送到“Video”控制器类并调用该类中的“details”方法。
如果用户要求domain.com/profile/edit我想将他发送到“Profile”控制器类并调用该类中的“edit”方法。
有人可以解释我应该怎么做吗?我有一些使用MVC框架的经验,但从来没有用MVC写过一些东西。
谢谢!
编辑:我现在明白了url如何指向正确的Controller,但是我没有看到Controller的对象实例在哪里,调用正确的方法?
答案 0 :(得分:1)
您需要重新路由您的请求。使用apache,可以使用mod_rewrite完成。
例如,将.htaccess文件添加到公共基目录并添加以下内容:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?rt=$1 [L,QSA]
这会重定向尝试访问的用户
/简档/编辑
到
的index.php?RT =简档/编辑
在index.php中,您可以访问 $ _ GET ['rt'] 以确定已请求的控制器和操作。
答案 1 :(得分:0)
示例:
$path = explode("?", $_SERVER["QUERY_STRING"],2);
$url = $path[0];
if(substr($url,0,1) != "/")
{
$url = "/".$url;
}
if(substr($url,-1,1) != "/")
{
$url = $url."/";
}
unset($_GET);
foreach(explode("&", $path[1]) as $pair)
{
$get = explode("=", $pair, 2);
$_GET[$get[0]] = $get[1];
}
// Define the Query String Path
define("QS_PATH", $url);
答案 2 :(得分:0)
根据您想要做什么或者您想做多少工作,另一个选择与编写您自己的MVC是使用Zend Framework。它完全符合您的要求和更多。您仍然需要配置其他答案中提到的URL重写,但它快速而简单。
即使您对Zend Framework不感兴趣,以下链接也可以帮助您配置重写规则:http://framework.zend.com/wiki/display/ZFDEV/Configuring%2BYour%2BURL%2BRewriter