======================
自定义动作助手
======================
1、动作助手可以在请求的时候(bootstrap)或者动作控制器创建的时候(init())实例化。
2、初始化助手:
a.显示的调用,知道助手名称,使用经纪人来调用助手:
$flashMessager = $this->_helper->getHelper('FlashMessager');
b.使用经纪人的__get()方法来调用助手:
$flashMessager = $this->_helper->FlashMessager;
c.直接调用动作助手的一个方法:
$this->_helper->FlashMessager('XxXxxs');
3、利用助手经纪人(Zend_Controller_Action_HelperBroker)来注册助手对象和助手路径。
a .使用addHelper来注册助手:
Zend_Controller_Action_HelperBroker::addHelper($myHelp);
b. 直接addPrefix()和addPah()两个方法来注册组件。
addPrefix($prefix);添加方法类前缀,遵循Zend Framework命名。
//Add helpers prefixed with My_Action_Helper in My/Action/Helpes/
Zend_Controller_Action_HelperBroker::addPrfix('My_Action_Help');
addPath('目录','类前缀')类前缀默认为Zend_Controller_Action_Helper。现在我们将我们自己的目录定义到指定的文件夹下:
Zend_Contoller_Aciton_Helper::addPath('./Plugins/Helpers','Helper');
这些方法是静态的,因而可以根据需要在控制器链中的任何位置调用动态的加载助手。
c.hasHelper($name)判断助手经纪人是否存在某助手,$name是去掉助手类前缀的名称。
d.getExistingHelper($name) | getStaticHelper($name) 从助手经纪人中获取已存在的助手。
e.removeHelper($name)利用经纪人来删除一个助手
======================
内建动作助手
======================
转向器(Redirector) $this->_helper->redirector->setCode(404);
-setCode()设置重定向过程中使用的HTTP相应码;
-setExit()在重定向后强制执行exit()方法。默认已经设定。
-setGotoSimple()设置默认的url,当没有提供参数给gotoSimple()时候转向该URL。
-gotoSimple($action,$controller=null,$module=null,array $parmas=array());类似于Zend_Controller_Action:_forward();
-setGotoUrl()/gotoUrl()
-setPrependBase()在重定向前加上请求对象的基地址(base Url)。
ViewRenderer助手(视图解析助手)
注: a.ViewRenderer助手无需在控制器中实例化,视图对象在控制器中将自动注册!
b.ViewRenderer助手根据当前的module controller action 来设置视图的脚本script 助手helpers 过滤器filters路径,并指派当前的模块名为[助手views/helpers]和[过滤器views/filters]的类名前缀。
c.ViewRenderer助手为所有分发的控制器和动作创建全局有效的视图对象(.phtml $this)
d.ViewRenderer助手允许开发人员通过它来为所有的控制器设置【默认】的视图解析选项。
e.ViewRenderer助手加入自动解析视图脚本(.phtml)的功能。
f.ViewRenderer助手允许开发人员为视图基路径创建自己的规范。
--------当我们手动执行_forward(),redirect或者render时候,不会发生自动解析。
--------VIewRenderer助手默认启用,禁用方式有以下几个:
a.可以通过前端控制器的noViewRenderer方法:
b.设定前端控制器参数方法:$front->setParam('noViewRenderer',true);
c.从助手经纪人(Zend_Controller_Action_HelperBroker)栈中移除ViewRenderer助手:Zend_Controller_Action_HelperBroker::removeHelper('viewRenderer')。
d.控制器中使用助手经纪人来移除:$this->_helper->removeHelper('viewRenderer')。'
e.$this->_helper->viewRenderer->setNoRender();
---------创建并注册自己的VIewRenderer对象,然后传入到助手经纪人:
$viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer();
$viewRenderer->setView($myVIew)
->setViewSuffix('html');
Zend_Controller_Action_HelperBroker::addHelper($viewRenderer);
浙公网安备 33010602011771号