FuelPHP - 路由
路由将请求 URI 映射到特定控制器的方法。在本章中,我们将详细讨论 FuelPHP 中的路由概念。
配置
路由配置文件位于 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 控制器和 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_about
login 匹配 http://localhost:8080/login 并解析控制器 Controller_Login 和操作方法 action_login
高级路由
您可以将任何正则表达式包含到路由中。Fuel 支持以下高级路由功能 −
:any − 这会匹配 URI 中从该点开始的任何内容,但不匹配"nothing"
:everything − 类似于 :any,但也匹配"nothing"
:segment −这仅匹配 URI 中的 1 个段,但该段可以是任何内容
:num − 这匹配任何数字
:alpha − 这匹配任何字母字符,包括 UTF-8
:alnum − 这匹配任何字母数字字符,包括 UTF-8
例如,以下路由匹配 URI http://localhost:8080/hello/FuelPHP 并解析控制器 Controller_Welcome 和操作 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 获取名称参数。如果未找到名称,则我们使用 World 作为默认值。我们将在 Request 和 Response 章节中学习 Request 类。
结果
HTTP 方法操作
FuelPHP 支持路由以匹配 HTTP 方法前缀操作。以下是基本语法。
class Controller_Employee extends Controller { public function get_index() { // 当 HTTP 方法是 GET 时调用。 } public function post_index(){ // 当 HTTP 方法是 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'))), );