位置: 编程技术 - 正文

Zend Framework教程之动作的基类Zend_Controller_Action详解(zendframework3中文手册)

编辑:rootadmin

推荐整理分享Zend Framework教程之动作的基类Zend_Controller_Action详解(zendframework3中文手册),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:怎么启用framework3.5,framework安装教程,zendframework3中文手册,framework4.0怎么打开,framework打开,framework打开,怎么启用framework3.5,framework4.0怎么打开,内容如对您有帮助,希望把文章链接给更多的朋友!

本文实例讲述了Zend Framework教程之动作的基类Zend_Controller_Action。分享给大家供大家参考,具体如下:

Zend_Controller_Action的实现

Zend Framework的动作控制器需要继承Zend_Controller_Action,Zend_Controller_Action提供了动作控制器的基本功能,具体参考如下代码:

Zend_Controller_Action_Interface

Zend_Controller_Action

Zend_Controller_Action提供了动作和视图的render功能,以及注册请求和响应对象,常用助手等等。

动作控制器的常用方法

在动作控制器中常用的方法和属性如下:

$this->_helper主要完成助手的相关操作例如:

通过设置ViewRenderer的noRender标记,可以简单地为一个独立的视图禁止解析(rendering):

禁止ViewRenderer的主要原因是如果你不需要视图对象或者如果你不通过视图脚本(例如,当使用动作控制器来司服网站服务协议如SOAP,XML-RPC或REST)来解析。大多数情况下,你不需要全局地禁止ViewRenderer,只选择性地在个别控制器或动作里禁止它。

请求对象和响应对象的相关操作

无数的对象和变量与对象一起注册,并且每个都有访问器方法。

请求对象:getRequest()可用来读取调用动作请求对象。

响应对象: getResponse()可用来读取收集最终响应的响应对象。一些典型的调用看起来象这样:

调用参数:前端控制器可能把参数传给路由器、派遣器和动作控制器。为了读取这些参数,可使用getInvokeArg($key);另外,用getInvokeArgs()读取整个参数列表。

请求参数:请求对象手机请求参数,如任何_GET 或 _POST 参数,或者指定在URL的路径信息里的用户参数。为了读取这些参数,可使用_getParam($key)或_getAllParams()。也可以用_setParam()来设置请求参数;当转发到另外的动作时这很有用。

用_hasParam($key)来测试是否一个参数存在(对逻辑分支有用)。

Note: _getParam()可带有一个可选的第二个参数,如果它不是空的,就包含一个缺省的值。用它在读取值之前来消除对_hasParam() 的调用:

视图的相关操作

Zend_Controller_Action为视图继承提供了一个初步的灵活的机制。有两个方法来完成这个:initView() 和 render();前者松散地加载$view public 属性,后者基于当前请求的动作来解析视图,它们使用目录层次来决定脚本路径。

视图初始化

initView()初始化视图对象。为了读取视图对象,render()调用initView(),但它可以在任何时候被初始化;缺省地,它用Zend_View对象来组装$view属性,但任何实现Zend_View_Interface的类可以使用。如果$view已经被初始化,它就简单地返回属性。

缺省的实现使用下面假设的目录结构:

applicationOrModule/ controllers/ IndexController.php views/ scripts/ index/ index.phtml helpers/ filters/

Zend Framework教程之动作的基类Zend_Controller_Action详解(zendframework3中文手册)

换句话说,视图脚本假定放在views/scripts/子目录,同时假定 views子目录还包含兄弟功能(助手和过滤器)。确定视图脚本名称和路径时,先以 views/scripts/作为基路径,然后加上以视图脚本对应控制器命名的目录。

解析(Rendering)视图

render() 有下列特征:has the following signature:

render()解析视图脚本。如果没有传递参数,它假定请求的脚本是[controller]/[action].phtml (.phtml是$viewSuffix属性的值)。为$action传递一个值将解析在[controller]子目录中的模板。为用[controller]重写,传递一个true值给$noController。最后,模板被解析到响应对象;如果你希望解析到一个在响应对象里指定的named segment,传递一个值给$name。

Note: 因为控制器和动作名字里可能包含分隔符如'_'、 '.' 和 '-',当决定视图名字时,render()把它们规格化成 '-'.在内部,它使用派遣器的字和路径分隔符来做规格化。这样,对/foo.bar/baz-bat的请求将解析脚本foo-bar/baz-bat.phtml。如果动作方法包含camelCasing,记住当决定视图脚本文件名的时候,这将变成由'-'分隔的字。

一些例子:

其它

_forward($action, $controller = null, $module = null, array $params = null) :执行另外一个动作。如果在preDispatch()里调用,当前请求的动作将被跳过来支持新的动作。否则,在当前动作被处理之后,在_forward()请求的动作将被执行。

_redirect($url, array $options = array()):重定向到另外一个地方。这个方法用URL和一组可选的选项。缺省地,它执行HTTP 重定向。

选项可包括一个或多个下面这些:

exit:是否立即退出。如果被请求,它将干净地关闭任何打开的会话和执行重定向。

可以用setRedirectExit()访问器在控制器里全局地设置这个选项。

prependBase:是否预先考虑基础URL和URL提供的请求对象一起注册。

使用setRedirectPrependBase()访问器,在控制器里全局地设置这个选项。

code:在重定向时要用什么HTTP代码。缺省使用;可以用从到之间的任何代码。

使用setRedirectCode()访问器,在控制器里全局地设置这个选项。

扩展自定义Zend_Controller_Action

为了创建动作控制器,设计上,Zend_Controller_Action 必须被继承。至少,需要定义控制器可能调用的动作方法。

除了为web应用程序创建有用的函数外,你可能发现在不同的控制器里重复同样的设置和实用方法;如果这样,创建一个继承(extends)Zend_Controller_Action 的基础类可能会解决问题。

Example #1 如何处理不存在的动作

如果控制器的请求包括一个未定义的动作方法,Zend_Controller_Action::__call()将被调用。__call()当然是PHP中用来重载方法的魔术方法。

缺省地,这个方法抛出一个Zend_Controller_Action_Exception 来表明在控制器里没有发现要求的方法。如果要求的方法以'Action'结尾,就假设一个动作被请求并且不存在;这样的错误导致带有代码为 的异常。所有其它方法导致带有代码为 的异常。这使你很容易地在错误句柄里区分是页面没有发现还是程序错误。

如果想执行其它操作,你应该重写这个函数。例如,如果你想显示错误信息,可以象下面这样来写:

另外的可能性就是你可能想转发到缺省控制页面:

为了定制控制器,除了重写__call()以外,本章前面说涉及的初始化、实用程序、访问器、视图和派遣钩子等方法都可以被重写。作为例子,如果把视图对象保存到注册表里,你可能想用象下面的代码来修改initView():

更多关于zend相关内容感兴趣的读者可查看本站专题:《Zend FrameWork框架入门教程》、《php优秀开发框架总结》、《Yii框架入门及常用技巧总结》、《ThinkPHP入门教程》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

Zend Framework教程之请求对象的封装Zend_Controller_Request实例详解 本文实例讲述了ZendFramework教程之请求对象的封装Zend_Controller_Request方法。分享给大家供大家参考,具体如下:概述请求对象是在前端控制器,路由器,

Zend Framework教程之响应对象的封装Zend_Controller_Response实例详解 本文实例讲述了ZendFramework教程之响应对象的封装Zend_Controller_Response用法。分享给大家供大家参考,具体如下:概述响应对象逻辑上是请求对象的搭档.目

Zend Framework教程之Zend_Controller_Plugin插件用法详解 本文实例讲述了ZendFramework教程之Zend_Controller_Plugin插件用法。分享给大家供大家参考,具体如下:通过Zend_Controller_Plugin可以向前端控制器增加附加的功

标签: zendframework3中文手册

本文链接地址:https://www.jiuchutong.com/biancheng/289890.html 转载请保留说明!

上一篇:Zend Framework教程之分发器Zend_Controller_Dispatcher用法详解(framework在哪看)

下一篇:Zend Framework教程之请求对象的封装Zend_Controller_Request实例详解(framework在哪)

  • 购买理财产品计入交易性金融资产
  • 个人发票需要身份证信息吗?
  • 电子税务局利润表本期金额
  • 12月工资1月发个税怎么算
  • 企业付的快递费是扣增值税还是进入费用扣除
  • 小企业会计准则和企业会计准则的区别
  • 从商业企业购进商品
  • 个体工商户怎么注册
  • 小规模纳税人转让土地使用权
  • 金融行业打包是什么意思
  • 出口发票税率是怎么算的
  • 销售货物的价外费用有哪些
  • 奖金属于应付职工薪酬
  • 企业短期贷款进什么科目
  • 学校应该缴纳的税
  • 建筑业小规模纳税人认定标准
  • 受让无形资产是什么意思
  • 固定资产借方表示什么意思
  • 大巴车票抵扣税率
  • 货运发票与运输发票的区别
  • 两家企业共用一个厂区
  • 房地产企业卖出去的房子需要缴纳城镇土地使用税吗
  • 房地产企业售房印花税
  • msiexec.exe是什么进程介绍
  • 腾讯电脑管家网址多少
  • 企业转让股票交什么税费呢
  • 银行初级证书全称
  • 销售免税商品可以抵扣进项税吗
  • 总公司拨给分公司的钱怎么平账
  • 代开的增值税怎么计提?
  • 应扣未扣应收未收税款是什么意思
  • nginx配置tp5
  • 废旧物资经营单位增值税税率
  • 孕妇钙片什么时候吃最好吸收? 已解决
  • php文件如何使用
  • php魔术常量有多少
  • vue3.0教程
  • php23种设计模式
  • 会计证的作用和用途
  • 交易性金融资产属于什么科目
  • 个人所得税如何查询
  • 营业外支出科目代码
  • 应付账款的平行登记
  • 开发阶段发生的费用计入什么科目
  • poi java 导入导出
  • linux mongodb基本操作
  • 开增值税专用发票的好处
  • 小规模首次申请发票张数
  • 《中华人民共和国禁毒法》自( )起施行
  • sql server基本知识
  • 员工工资需要交税吗
  • 一般纳税人不开票收入怎么做账
  • 计划成本核算的实际成本怎么算
  • 行政事业单位工作时间
  • 政府补助如何会计核算
  • 固定资产汽车折旧年限是多少年
  • 诉讼费应计入什么会计科目
  • 用友关账怎么取消
  • 自产自销属于商品吗
  • 新准则建筑业会计核算
  • 商品流通企业会计做账流程
  • mysql5.6源码安装
  • 预装win8的华硕s200开箱
  • win8电脑定时关机怎么设置方法
  • xp电脑注册表怎么打开
  • cortana win10
  • jquery validate.js表单验证入门实例(附源码)
  • qat开发
  • java程序员练手项目
  • dos命令不能执行怎么回事
  • python3 生成器
  • 运算符优先级由高到低的顺序
  • js中arguments
  • linux查看shell脚本内容
  • shell语言的特点
  • jquery input
  • 果断收藏9个Javascript代码高亮脚本
  • 新领取的发票怎么读入金税盘
  • 纳税人分类分级管理办法
  • 国税和地税归哪里管
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设