- FuelPHP 教程
- FuelPHP - 首页
- FuelPHP - 简介
- FuelPHP - 安装
- FuelPHP - 架构概述
- FuelPHP - 简单 Web 应用
- FuelPHP - 配置
- FuelPHP - 控制器
- FuelPHP - 路由
- FuelPHP - 请求 & 响应
- FuelPHP - 视图
- FuelPHP - 展示器
- FuelPHP - 模型 & 数据库
- FuelPHP - 表单编程
- FuelPHP - 验证
- 高级表单编程
- FuelPHP - 文件上传
- FuelPHP - Ajax
- FuelPHP - HMVC 请求
- FuelPHP - 主题
- FuelPHP - 模块
- FuelPHP - 包
- Cookie & Session 管理
- FuelPHP - 事件
- FuelPHP - 邮件管理
- FuelPHP - 分析器
- 错误处理 & 调试
- FuelPHP - 单元测试
- 完整工作示例
- FuelPHP 有用资源
- FuelPHP - 快速指南
- FuelPHP - 有用资源
- FuelPHP - 讨论
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_ 是预定义的默认路由,当应用程序以根路径 / 访问时(例如:https://: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 匹配 https://:8080/about 并解析控制器 Controller_Site 和操作方法 action_about
login 匹配 https://:8080/login 并解析控制器 Controller_Login 和操作方法 action_login
高级路由
您可以在路由中包含任何正则表达式。Fuel 支持以下高级路由功能:
:any - 从 URI 中的该点开始匹配任何内容,但不匹配“无”
:everything - 与 :any 类似,但还匹配“无”
:segment - 仅匹配 URI 中的 1 个段,但该段可以是任何内容
:num - 匹配任何数字
:alpha - 匹配任何字母字符,包括 UTF-8
:alnum - 匹配任何字母数字字符,包括 UTF-8
例如,以下路由匹配 URI https://: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 获取 name 参数。如果未找到 name,则使用 World 作为默认值。我们将在请求和响应章节学习Request类。
结果
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'))),
);