`
lht
  • 浏览: 197634 次
  • 来自: 深圳
社区版块
存档分类
最新评论

利用Plugin为ZendFramework加上RESTful view

阅读更多

使用ZF1.0的时候发现它的MVC模式的view模板缺省为phtml,而REST接口要求根据客户要求Accept协议头返回不同格式的结果。考察了一下整个Framework,发现可以用Plugin简单地实现不同View模板的选择。下面是Plugin的代码:

<?php

/**
 * Choose correct view for RESTful client
 *  
 * @author lht
 * @version 
 */

final class Restful extends Zend_Controller_Plugin_Abstract {
    public function preDispatch(Zend_Controller_Request_Abstract $request) {
        $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
    	if (preg_match('/text\/xml/i', $request->getHeader('Accept'))) {
            $this->getResponse()->setHeader('Content-Type', 'text/xml; charset=utf-8');
            $viewRenderer->setViewSuffix('pxml');
        } elseif (preg_match('/application\/json/i', $request->getHeader('Accept'))) {
            $this->getResponse()->setHeader('Content-Type', 'application/json; charset=utf-8');
            $viewRenderer->setViewSuffix('pjson');
        } elseif (preg_match('/text\/plain/i', $request->getHeader('Accept'))) {
            $this->getResponse()->setHeader('Content-Type', 'text/plain; charset=utf-8');
            $viewRenderer->setViewSuffix('ptxt');
        }
    }
}
 

 

可以在index.php中这样使用:

$controller = Zend_Controller_Front::getInstance();
$controller->setControllerDirectory('../application/default/controllers');
$controller->throwExceptions(false); // should be turned on in development time 
$controller->registerPlugin(new Restful());
 

 

这样如果Restful client如果Accept: text/xml,那么就会收到.pxml模板的内容。

分享到:
评论

相关推荐

    Zend Framework教程之Zend_Controller_Plugin插件用法详解

    通过以上内容,你应该对`Zend_Controller_Plugin`有了深入的理解,能够有效地利用它来扩展和定制你的Zend Framework应用程序。记住,插件是一种强大的工具,可以让你在不修改核心代码的情况下实现复杂的功能,但也要...

    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 framework 的一些知识

    ### ZEND Framework MVC 架构详解 ...综上所述,ZEND Framework的MVC架构为开发者提供了一种高效、灵活的方式来构建Web应用程序。通过理解其核心组成部分及其工作原理,可以帮助开发者更好地利用这一架构进行开发。

    Zend_Framework 中文手册

    在 Zend Framework 中,`Controller` 处理用户请求,`Model` 负责数据处理,而 `View` 则用于展示结果。 2. **路由与调度** 路由系统负责解析URL,将请求映射到相应的控制器和动作。调度器则依据路由规则调用对应...

    zendframework结构应用示例图

    ### Zend Framework 基本请求工作流程与前端控制器分发工作流程详解 #### 一、概述 在深入探讨 Zend Framework 的基本请求工作流程与前端控制器分发工作流程之前,我们首先来了解一下 Zend Framework(ZF)的基本...

    Tangram Plugin FrameWork 安裝及配置 IDE

    3. 在**UserOverrides**区域添加一个名为**tangram**的新环境变量,其值为Tangram Plugin Framework根目录的完整路径(例如:`D:\Tangram-plugin-FrameWork`)。 4. 接着点击左侧树形结构中的**『Delphi Options』**...

    Zend framework处理一个http请求的流程分析

    `Zend_Controller_Action_ViewRenderer`是一个内置插件,它为每个Action控制器创建一个`Zend_View`实例,并将其绑定到控制器的`view`属性。当控制器处理完请求后,ViewRenderer会渲染对应的模板文件,并将结果放入...

    plugin-framework

    《深入理解Plugin Framework》 在IT领域,Plugin Framework(插件框架)是一种常见的软件架构模式,它允许开发者通过插入可扩展的功能模块(插件)来增强应用程序的能力,而无需修改核心代码。本篇文章将深入探讨...

    TMS Plugin Framework 6.0.5 FS

    TMS Plugin Framework 6.0.5 FS 是一款专为 Delphi 开发者设计的高级插件架构控件包,它提供了一整套完整的解决方案,帮助开发者构建可扩展、模块化的应用程序。该框架的核心在于其强大的插件管理系统和便捷的插件...

    jseclipse_plugin(zend studio插件JS离线安装包)

    "jseclipse_plugin(zend studio插件JS离线安装包)" 这个标题表明我们讨论的是一个专门为Zend Studio开发的JavaScript插件的离线安装包。"jseclipse_plugin"可能是指该插件的名字,它旨在增强Zend Studio对...

    Tangram Plugin FrameWork基于Delphi的模块化插件框架..rar

    本文将深入探讨Tangram Plugin Framework,这是一个专为Delphi编程环境打造的模块化插件框架。通过使用此框架,开发者可以轻松地创建可插拔的组件,实现应用程序的功能扩展和定制。 Delphi,由Embarcadero ...

    TMS Plugin Framework 6.0.4 sources

    TMS Plugin Framework 6.0.4 是一款专为Delphi开发者设计的插件式架构控件包,它提供了强大的功能,使得开发人员可以轻松地创建、管理和部署插件。这个框架的核心在于其模块化的设计,允许应用程序根据需要加载或...

    CTK Plugin Framework实例

    总的来说,CTK Plugin Framework为开发医疗应用提供了强大的工具,允许开发者轻松地创建和集成插件,实现软件的模块化和可扩展性。通过学习这个实例,我们可以更好地理解如何利用CTK构建复杂的、具有插件架构的软件...

    laminas-dependency-plugin:用其Laminas Project等效项替换zendframework和zfcampus软件包

    在项目中启用此Composer插件后,它会拦截来自zendframework和zfcampus供应商的安装软件包的请求,并将其替换为Laminas Project中的等效软件包。 安装 $ composer require laminas/laminas-dependency-plugin

    The TMS Plugin Framework 6

    TMS Plugin Framework 6 是一款专为DELPHI开发者设计的插件式架构控件包,它为构建高度可扩展和模块化的应用程序提供了强大的支持。这个框架的核心在于其插件管理组件和插件创建向导,使得开发者能够轻松地构建、...

    Zend Framework教程之Loader以及PluginLoader用法详解

    主要介绍了Zend Framework教程之Loader以及PluginLoader用法,结合实例形式详细分析了Zend Framework自动加载机制的原理,使用方法与相关注意事项,需要的朋友可以参考下

    Zend Framework实现多文件上传功能实例

    这个类继承自`Zend_Controller_Plugin_Abstract`,即Zend Framework的插件抽象类。在这个类中,定义了多个属性,如文件上传存储路径、一次性最多上传文件数量、文件最大尺寸等。同时,还定义了允许上传的文件格式...

    TMS_Plugin_Framework_6.0.4_sources.7z

    通过分析和研究这些源代码,开发者不仅可以了解TMS Plugin Framework的实现细节,还可以学习到如何构建跨版本的插件系统,以及如何利用Delphi的项目管理和编译配置来优化开发流程。这不仅有助于提升个人技能,也为...

Global site tag (gtag.js) - Google Analytics