请求处理组件

第1节

介绍

在Cake里,使用请求处理组件来决定关于进来的HTTP请求信息。你可以使用它更好的通知你的controller关于AJAX请求,得到关于远程客户端IP地址,以及请求的内容类型,或者去除输出数据中你不想要的数据的信息。为了使用请求组件,你需要确保在Controller的$component数组中指定它。.

class ThingsController extends AppController

{

var $components = array('RequestHandler');

// ...

}

第2节

获取客户/请求信息

让我们更深入一步:

accepts

  • string $type

返回客户接受的content-type信息,这取决于$type值。如果传入null或无值,它将返回一个客户端接受的content-type数组。如果传入一字符串,而且在content-type中检验$type(参看setContent()),客户端接受它,它返回true。如果$type是一个数组,每个字符串将分别计算,如果只要他们中的一个符合接受的content-type类型,accepts()方法返回true。例如:

class PostsController extends AppController

{

var $components = array('RequestHandler');

function beforeFilter ()

{

if ($this->RequestHandler->accepts('html'))

{

// Execute code only if client accepts an HTML (text/html) response

}

elseif ($this->RequestHandler->accepts('rss'))

{

// Execute RSS-only code

}

elseif ($this->RequestHandler->accepts('atom'))

{

// Execute Atom-only code

}

elseif ($this->RequestHandler->accepts('xml'))

{

// Execute XML-only code

}

if ($this->RequestHandler->accepts(array('xml', 'rss', 'atom')))

{

// Executes if the client accepts any of the above: XML, RSS or Atom

}

}

}

  • getAjaxVersion

如果你正在使用Prototype JS库,你可以获取一个特殊的头,此头在AJAX请求中设定。本函数返回使用的Prototype版本。

  • getClientIP

返回远程客户端的IP地址。

  • getReferrer

返回请求起源的服务器名。

  • isAjax

如果当前的请求是一个XMLHttpRequest,返回true。

  • isAtom

如果客户端接受Atom feed内容(application/atom+xml),返回true。

  • isDelete

如果当前的请求通过DELETE,返回true。

  • isGet

如果当前请求通过GET,返回true。

  • isMobile

如果user agent字符串符合一个移动的web浏览器,返回true。

  • isPost

如果当前请求通过POST,返回true。

  • isPut

如果当前请求通过PUT,返回true。

  • isRss

如果客户端接受RSS feed内容(application/rss+xml),返回true。

  • isXml

.如果客户端接受XML(application/xml or text/xml),返回true。

setContent

  • string $name
  • string $type

对于accepts() 和prefers()的使用,增加一个content-type别名映射,在这里$name是映射(字符串)的名字,$type是一个字符串或者一个字符串数组。它们每个都是一个MIME类型。内建的类型映射如下:

// Name     => Type

'js'      => 'text/javascript',

'css'     => 'text/css',

'html'    => 'text/html',

'form'    => 'application/x-www-form-urlencoded',

'file'    => 'multipart/form-data',

'xhtml'   => array('application/xhtml+xml', 'application/xhtml', 'text/xhtml'),

'xml'     => array('application/xml', 'text/xml'),

'rss'     => 'application/rss+xml',

'atom'    => 'application/atom+xml'

第3节

清除数据

你偶尔想删除来自一个请求或输出的数据,使用下面的请求处理函数来完成这些操作吧。

stripAll

  • string $str

删除$str中的空格,图像,以及脚本(using stripWhitespace(), stripImages(), 和stripScripts()).

stripImages

  • string $str

从$str中删除任何嵌入图像的HTML。

stripScripts

  • string $str

从$str中删除任何与<script> 和<style>相关的标签。

stripTags

  • string $str
  • string $tag1
  • string $tag2...

从$str中删除$tag1, $tag2等指定的标签。

$someString = '<font color="#FF0000"><bold>Foo</bold></font> <em>Bar</em>';

echo $this->RequestHandler->stripTags($someString, 'font', 'bold');

// 输出: Foo <em>Bar</em>

stripWhiteSpace

  • string $str

从$str中删除空格。

第4节

其他有用的函数

当你的应用程序包含AJAX请求时,请求处理组件非常有用。使用setAjax()函数来自动检测AJAX请求,并为请求将Controller的布局设置为AJAX布局。这样的好处是你可以创建小的分块的view,这些view作为AJAX view也可能是双倍的。

// list.thtml

<ul>

<? foreach ($things as $thing):?>

<li><?php echo $thing;?></li>

<?endforeach;?>

</ul>

//-------------------------------------------------------------

//The list action of my ThingsController:

function list()

{

$this->RequestHandler->setAjax($this);

$this->set('things', $this->Thing->findAll());

}

当一个普通的浏览器请求为/things/list时,对于应用程序而言,无序列会在缺省的布局里render。如果把URL作为一个AJAX操作的一部分请求时,列表会自动在空的AJAX布局里render。

Last Updated:2006年12月03日

转载于:https://www.cnblogs.com/confach/articles/577359.html

CakePHP中文手册【翻译】-请求处理组件相关推荐

  1. 20050620 GNU Bison 中文手册翻译完成

    20050620 GNU Bison 中文手册翻译完成 GNU Bison实际上是使用最广泛的Yacc-like分析器生成器,使用它可以生成解释器,编译器,协议实现等多种程序. 它不但与Yacc兼容还 ...

  2. CakePHP中文手册【翻译】

    0.声明 1.前言 2.介绍CakePHP 3.基本概念 4.安装CakePHP 5.配置 6.Scaffolding 7.Model 8.Controller 9.View 10.Component ...

  3. CakePHP中文手册【翻译】-Cake Blog创建指南

    Cake Blog创建指南 第1节 介绍 欢迎来到Cake.你可能正在使用本指南,因为你想学习更多关于Cake是如何工作的知识.其目的就是为了提高效率,并且让编写代码变得更加有趣.我们希望当你深入代码 ...

  4. CakePHP中文手册【翻译】-ACL

    访问控制列表(ACL) 第1节 理解ACL如何工作 最重要,也最强大的事情是需要一系列的访问控制.访问控制列表是一种细粒度,易维护以及易管理的方式来管理应用程序权限.访问控制列表或ACL[1]处理2件 ...

  5. CakePHP中文手册【翻译】-基本概念

    基本概念 第1节 介绍 本章是对MVC概念的一个短小而且随意的介绍,因为这些概念在Cake里得到实现.如果你是一个MVC模式的新人,很显然本章就是为你而写的.我们从MVC的一般概念的讨论开始,然后以我 ...

  6. bq24773功能分析(中文手册翻译)

    1. 特性 1-4节电池充电控制,输入电压范围4.5-24V 支持IIC 无电池或电池深度放电的情况下支持系统即时启动操作 可在适配器满载时进入补充模式,支持同步BATFET 控制 可编程输入电流限制 ...

  7. cakephp $this-html-css,CakePHP - 中文手册

    Helper(帮助类) Section 1 Helpers Helper类就是为视图提供了常见且通用的方法,更好更快的格式化或者展现数据. HTML Helper 介绍 HTML Helper是Cak ...

  8. CakePHP 中文手册

    基本概念 Section1 简介 本章节篇幅很短,简单的介绍一下MVC概念以及在cake中是如何实现的.如果你对MVC模式很陌生,这个章节将会非常适合你.我们由 常规的MVC概念开始我们的讨论,然后用 ...

  9. GNU Bison 2.1 中文手册

    20060121 GNU Bison 2.1中文手册翻译完成 Bison 2.1 是Bison最新版本.该版本的最大改进就是支持以C++语言做为输出,并且在分析器的本地化输出中有多项改进.Bison的 ...

最新文章

  1. 删除链表中全部值为k的节点
  2. REVERSE-PRACTICE-JarvisOJ-3
  3. Linux中英文命令对应
  4. 【c++】构造函数初始化列表中成员初始化的次序性
  5. 智能移动项目打包发布经验交流
  6. 机器学习:提升算法之Adaboost
  7. @spoj - lcs2@ Longest Common Substring II
  8. 象棋软件最强手机版_我说它是地表手机最强清理软件,没意见吧
  9. 计算机应用的三级学科名称及代码,学科分类与代码版.doc
  10. PHP开源管理系统 Gms,GMS 一个成熟的gms系统,拥有基本的权限管理和分类,后台很好 Windows Develop 249万源代码下载- www.pudn.com...
  11. matlab 正则化表达式_MatLab归一化(正则化)函数
  12. Java-获取本地主机的域名和主机名(net)
  13. 感知机原理以及python实现
  14. [设计模式]行为模式-模板方法(C++描述)
  15. 【技术科普】HLS视频流内m3u8文件和TS切片是什么关系?
  16. javascript 百度地图定位标点,定位详情
  17. 网络工程师——Private VLAN
  18. JS创建26个小写字母数组
  19. ORACLE迁移到DM/达梦 Mysql迁移到DM/达梦 SQLSERVER迁移到DM/达梦 超级有用参考文档!!!
  20. 介绍汽车美容预约小程序app开发

热门文章

  1. numpy中矩阵运算的特点
  2. KiCAD初学者指南
  3. 第十五届全国大学生智能车竞赛百度深度学习车模
  4. 什么?欧洲也有个恩智浦杯?
  5. 计算机教师资格证报考科目,还在纠结报考教师资格证该选哪个科目呢?看完这篇,你不再迷茫...
  6. Xilinx DMA kernel 驱动详解 (一)
  7. android多渠道自动打包工具,Android多渠道打包工具
  8. nginx 没有cookie_Nginx 内容缓存及常见参数配置
  9. matlab 图论工具箱
  10. 【 MATLAB 】ppval 函数介绍(评估分段多项式)