`
lfq618
  • 浏览: 88453 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Zend Framework 中配合 Zend_Config 实现路由

阅读更多

Zend Framework 的路由转发功能不仅可以让 url 变得简洁易记,而且非常对 SEO 非常有益,zf 的路由转发有着多样的配置方法,能实现各种转发需求。

随着站点复杂程度的增加,我们会有越来越多的转发规则,而将这些规则独立到一个文件中,是一个非常好的习惯。本文讲解的是将转发规则存放在单独的配置文件里面,然后配合 Zend_Config 实现转发的方法。

对于直接在程序中实现转发设置,手册上有简单的示例:

PHP:

  • <?php
  • $router = $controller->getRouter(); // 获取路由
  • $route = new Zend_Controller_Router_Route(
  • 'author/:username',
  • array(
  •        'controller' => 'profile',
  •        'action'     => 'userinfo'
  • )
  • );
  • $router->addRoute('user', $route);
  • ?>




上面的规则能将 http://domain.com/author/martel 指向到 http://domain.com/profile/action/author/martel ,这样设置,能大大降低 url 的复杂程度,让 url 简单明了。

我们如果有多条这种规则,就可以考虑将规则放到单独的文件中,手册上是用 ini 文件存储路由规则,我这里则使用 php 数组存储:

PHP:

  • <?php
  • return array(
  • // 将 /view/123 映射为 /default/index/index/id/123
  • 'view' => array(
  •        'route' => 'view/:id',
  •        'defaults' => array(
  •          'module' => 'default',
  •          'controller' => 'index',
  •          'action' => 'index',
  •        ),
  • ),
  • // 将 http://domain.com/author/martel 映射为 http://domain.com/profile/action/author/martel
  • 'profile' => array(
  •        'route' => 'author/:username',
  •        'defaults' => array(
  •          'controller' => 'profile',
  •          'action' => 'userinfo',
  •        ),
  • ),
  • );
  • ?>




对于从数组中取出规则,然后设置 Zend_Controller_Router_Rewrite ,手册也有一段示例:

PHP:

  • <?php
  • $routerConfig = new Zend_Config(require_once 'routes.php');
  • $routerRules = new Zend_Controller_Router_Rewrite();
  • $router->addConfig($routerRules);
  • ?>




不过,手册上没有如何将上面的路由规则应用到当前 controller 的示例,这个也是让新手很头疼的问题,研究过 zend framework 的源码后,我们可以很容易发现解决方法:

PHP:

  • <?php
  • $routerConfig = new Zend_Config('routes.php'); // 加载配置
  • $routerRules = new Zend_Controller_Router_Rewrite();
  • $routerRules->addConfig($routerConfig); // 设置规则
  • $routers = $controller->getRouter(); // 获取路由
  • $routers->addRoutes($routerRules->getRoutes()); // 通过 $routerRules->getRoutes() 获取规则,然后设置
  • ?>
分享到:
评论

相关推荐

    ZendFramework中文文档

    1. Introduction to Zend Framework 1.1. 概述 1.2. 安装 2. Zend_Acl 2.1. 简介 2.1.1. 关于资源(Resource) 2.1.2. 关于角色(Role) 2.1.3. 创建访问控制列表(ACL) 2.1.4. 注册角色(Role) 2.1.5. 定义访问...

    zend framework2例子album 完整能运行

    Zend Framework 2(ZF2)是一个面向对象的、模块化且高性能的PHP开发框架,用于构建Web应用程序和服务。本示例“album”是ZF2官方提供的一个基础教程项目,旨在帮助开发者快速理解和学习如何在ZF2中进行实际的开发...

    zend framework中英文手册合集

    Zend_Config 提供了灵活的方式来管理应用程序配置,而 Zend_Application 和 Zend_Injector 实现了依赖注入,允许动态组装对象并注入依赖,提升代码的可测试性和可维护性。 通过深入学习 Zend Framework 的中英文...

    最新zend framework 中文手册

    3. **定义路由**: 在`config/routes.ini`或`Bootstrap`中设置路由规则。 4. **创建控制器**: 编写处理用户请求的控制器类。 5. **设计模型**: 实现业务逻辑和数据处理,可能包括数据库操作。 6. **创建视图**: 编写...

    zendframework快速配置

    "zendframework/zendframework": "^2.6" } } ``` 然后运行 `composer install` 命令来安装。 ### 2. 创建项目结构 Zend Framework 2 使用模块化结构,每个模块代表应用的一个独立部分。在项目根目录下创建一个...

    zend framework 最新手册

    6. **依赖注入(Dependency Injection)**:Zend Framework 支持依赖注入,通过容器(如 Zend_Registry 或 Zend_Config)来管理对象及其依赖关系,提高代码的可测试性和可扩展性。 7. **表单(Forms)**:Zend_Form...

    已配置好的多模块多模板Zend Framework

    "多模块多模板"的配置是Zend Framework中的一个重要概念,这种设计允许开发者将大型项目分解为多个独立的模块,每个模块都有自己的业务逻辑和视图模板,以提高代码的可维护性和可重用性。 【描述】"最近项目要用...

    zend framework 英文手册下载

    在 Zend Framework 中,MVC 实现得非常灵活,允许开发者根据项目需求进行定制。 **2. 组件化设计** Zend Framework 采用组件化设计,这意味着你可以只选择需要的组件来使用,而不是整个框架。例如,可以单独使用 ...

    2013年最近Zend Framework2图书Web Development with Zend Framework 2

    Zend Framework 2使用Zend\Di实现对象图的依赖注入,以及使用Zend\Config进行配置管理。 12. 持久化: 持久化是指将数据保存在可存储的介质上。本书讲述了如何使用Zend Framework 2进行数据持久化,包括与数据库交互...

    ZendFramework 库代码

    在提供的 "ZendFramework-1.11.10.tar.gz" 压缩包中,包含了 Zend Framework 1.11.10 版本的所有源码。解压后,你可以查看源代码以了解其内部工作原理,学习如何利用这些组件构建自己的应用程序。"Readme-说明.htm" ...

    zendframework留言分页

    在本项目中,我们主要探讨如何使用Zend Framework实现一个基于MySQL数据库的留言系统的分页功能。 Zend Framework是一款流行的PHP开发框架,它提供了丰富的组件和工具,使得开发过程更加高效和规范。下面我们将深入...

    zendframework入门pdf by Rob Allen

    **标题**:“zendframework入门pdf by Rob Allen” **描述**:“getting-started-with-zend-framework-152” 本教程旨在为初学者提供一个基本的指南,介绍如何使用 Zend Framework 来开发简单的数据库驱动的应用...

    ZendFramework框架配置...

    6. **依赖注入**:依赖注入是 Zend Framework 中实现解耦和可测试性的重要方式。通过配置依赖注入容器,我们可以控制对象的生命周期和依赖关系。这使得代码更加灵活且易于维护。 7. **事件系统**:Zend Framework ...

    zend framework 2

    **Zend Framework 2详解** Zend Framework 2(简称ZF2)是PHP开发的一款开源、基于组件的Web应用程序框架。作为 Zend Framework 1 的重大升级,它引入了许多创新特性,优化了性能,提升了开发者的工作效率。在本文...

    超简单zendframework留言板

    【超简单zendframework留言板】 Zend Framework 是一个开源的、基于组件的 PHP 框架,它为开发高质量的Web应用程序提供了强大的工具。本教程将详细讲解如何使用 Zend Framework 创建一个超简单的留言板系统,涵盖...

    Zend Framework 2.1.5 Album Demo

    在 Zend Framework 2 中,Composer 用于管理应用程序的依赖关系。 - `composer.lock`: 保存了项目依赖的确切版本,确保在不同环境中安装的依赖版本一致,避免因依赖库版本不一致引发的问题。 - `composer.phar`: ...

    Zend Framework自制框架

    在 Zend Framework 中,模块化允许开发者将复杂的应用程序拆分为更小、更易于管理的部分,每个模块可以包含模型、视图、控制器和其他相关资源。 **标签解析:** "Zend Framework" 标签直接关联到 PHP 开发框架,它...

Global site tag (gtag.js) - Google Analytics