Zend Framework - 路由
-
简述
路由将请求 URI 映射到特定控制器的方法。在本章中,我们将了解如何在Zend Framework 中实现路由。通常,任何 URI 都有三个部分 -- 主机名段
- 路径段
- 查询段
例如,在 URI/URL − http://www.example.com/index?q=data 中,www.example.com 是主机名段,index是路径段,q=data 是查询段。通常,路由会根据一组约束检查“页”段。如果任何约束匹配,则返回一组值。其中一个主要值是控制器。在某些情况下,路由还会检查主机段、查询段、请求 HTTP 方法、请求 HTTP 标头等。 -
路由 & 路由栈
Route 是路由中的主要对象。Zend Framework 有一个特殊的路由对象接口,RouteInterface。所有路由对象都需要实现路由接口。路由接口的完整列表如下 −主要方法是match。match 方法根据其中定义的约束检查给定的请求。如果找到任何匹配项,它将返回RouteMatch对象。此路由匹配对象将匹配请求的详细信息作为参数提供。可以使用getParams方法从RouteObject中提取这些参数。RouteObject 的方法完整列表如下 −通常,典型的 MVC 应用程序具有许多路由。此路由中的每条都将按后进先出顺序进行处理,并且将匹配并返回单个路由。如果没有匹配/返回的路由,则应用程序返回“Page not found”错误。Zend Framework 提供了一个处理路由的接口,RouteStackInterface。此路由堆栈接口具有添加/删除路由的选项。RouteStackInterface 的完整列表如下 −Zend Framework 提供了RouteStack接口的两个实现,它们如下所示 −- SimpleRouteStack
- TreeRouteStack
-
路由类型
Zend Framework 为“Zend\Mvc\Router\Http”命名空间下的所有情况提供了许多现成的路由对象。为给定情况选择和使用适当的路由对象就足够了。可用路由如下 −-
Hostname − 用于匹配 URI 的主机部分。
-
Literal − 用于匹配确切的 URI。
-
Method − 用于匹配传入请求的 HTTP 方法。
-
Part − 用于使用自定义逻辑匹配 URI 路径段的部件。
-
Regex − 用于按正则表达式模式匹配 URI 路径段。
-
Schema − 用于匹配 URI 架构,如 http、https 等。
-
Segment − 用于通过将 URI 路径拆分为多个段来匹配 URI 路径。
让我们看看如何编写最常用的文字和段路由。路由通常在每个模块的配置文件中指定 - module.config.php。Literal 路由
通常,路由按后进先出顺序进行查询。文本路由用于执行 URI 路径的精确匹配。它的定义如下图所示 -上述路由与请求 URL 中的 /path 匹配,并返回index作为操作,IndexController作为控制器。Segment 路由
分段路由用于您的 url 应包含变量参数时。它被描述为如下 -此处,句段由冒号表示,后跟字母数字字符。如果保留一个段是可选的,则它用括号括起来。每个段都可能具有与之关联的约束。每个约束都是一个正则表达式。 -
-
在 Tutorial 模块中配置路由
让我们在 Tutorial 模块中添加一个段路由。更新教程模块配置文件 – module.config.php在 myapp/module/Tutorial/config提供。我们已成功为Tutorial模块添加了路由。在完成教程模块方面,我们只落后了一步。我们需要为模块添加 View,我们将在后续章节中学习。