路由(Routing)
路由映射请求URI到特定控制器的方法。 在本章中,我们将详细讨论FuelPHP中的routing概念。
配置 (Configuration)
路由配置文件位于fuel/app/config/routes.php 。 默认的routes.php文件定义如下 -
<?php
return array (
'_root_' => 'welcome/index', // The default route
'_404_' => 'welcome/404', // The main 404 route
'hello(/:name)?' => array('welcome/hello', 'name' => 'hello'),
);
这里, _root_是预定义的默认路由,当使用根路径请求应用程序时,它将匹配,例如http://localhost:8080/ 。 _root_的值是控制器以及匹配时要解决的操作。 welcome/index解析为Controller_Welcome controller和action_index操作方法。 同样,我们有以下保留路线。
root - 未指定URI时的默认路由。
403 - 找到HttpNoAccessException时抛出。
404 - 在找不到页面时返回。
500 - 找到HttpServerErrorException时抛出。
简单路由
将路由与请求URI进行比较。 如果找到匹配项,请求将路由到URI。 简单路由描述如下,
return array (
'about' => 'site/about',
'login' => 'employee/login',
);
这里, about匹配http:// localhost:8080/about并解析控制器,Controller_Site和action方法,action_about
login匹配http:// localhost:8080/login并解析控制器,Controller_Login和action方法,action_login
高级路由
您可以在路线中包含任何正则表达式。 Fuel支持以下高级路由功能 -
:any - 这匹配URI中该点的任何内容,与“nothing”不匹配
:everything - 喜欢:任何,但也匹配“没有”
:segment - 这只匹配URI中的1个段,但该段可以是任何段
:num - 匹配任何数字
:alpha - 匹配任何字母字符,包括UTF-8
:alnum - 匹配任何字母数字字符,包括UTF-8
例如,以下路由匹配URI http://localhost:8080/hello/FuelPHP并解析控制器, Controller_Welcome和action action_hello
'hello(/:name)?' => array('welcome/hello', 'name' => 'hello'),
Controller_Welcome相应的动作方法如下,
public function action_hello() {
$this->name = Request::active()->param('name', 'World');
$message = "Hello, " . $this->name;
echo $message;
}
在这里,我们使用Request类从URL获取name参数。 如果找不到名称,那么我们使用World作为默认值。 我们将在Request和Response章节中学习Request类。
结果 (Result)
HTTP方法操作
FuelPHP支持匹配HTTP方法前缀操作的路由。 以下是基本语法。
class Controller_Employee extends Controller {
public function get_index() {
// called when the HTTP method is GET.
}
public function post_index(){
// called when the HTTP method is POST.
}
}
我们可以根据配置文件中的HTTP谓词将URL路由到控制器和操作,如下所示。
return array (
// Routes GET /employee to /employee/all and POST /employee to /employee/create
‘employee’ => array(array('GET', new Route(‘employee/all')), array('POST',
new Route(‘employee/create'))),
);