Class Myself Extends Phper{ }

二十弱冠、三十而立;不要等到当而立感叹弱冠,当不惑感叹而立...
  首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

前端控制器中的动作助手

Posted on 2010-05-21 11:49  Terry_glp  阅读(775)  评论(0)    收藏  举报

======================
自定义动作助手
======================
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);