开发手册 欢迎您!
软件开发者资料库

FuelPHP - 路由

FuelPHP Routing - 从基本概念到高级概念,从简单简单的步骤学习FuelPHP,包括简介,安装,架构概述,简单Web应用程序,配置,控制器,路由,请求和响应,视图,演示者,模型和数据库,表单编程,验证,高级表单编程,文件上传,Ajax,HMVC请求,主题,模块,包,Cookie和会话管理,事件,电子邮件管理,Profiler,错误处理和调试,单元测试,完整的工作示例。

路由映射请求URI到特定控制器的方法.在本章中,我们将详细讨论FuelPHP中路由的概念.

配置

路由配置文件是位于 fuel/app/config/routes.php .默认的 routes.php 文件定义如下 :

 'welcome/index',   // The default route       '_404_'   => 'welcome/404',     // The main 404 route       'hello(/:name)?' => array('welcome/hello', 'name' => 'hello'),    );

此处, _root _ 是预定义的默认路由,当使用根路径请求应用程序时,将匹配该路由,例如:的的http://本地主机: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方法,action_about

登录与http://localhost:8080/login匹配并解析控制器,Controller_Login和操作方法,action_login

高级路由

您可以在路由中包含任何正则表达式. Fuel支持以下高级路由功能 :

  • :any : 这匹配URI中的任何内容,与"无"匹配

  • :所有 : 喜欢:任何,但也匹配"没有"

  • :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 类.

结果

Controller Welcome

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'))), );