• Main Page
  • Related Pages
  • Namespaces
  • Data Structures
  • Files
  • Examples
  • File List

E:/E/GEAMP/www/openbiz/openbiz/others/Zend/View/Helper/Action.php

00001 <?php
00024 require_once 'Zend/View/Helper/Abstract.php';
00025 
00034 class Zend_View_Helper_Action extends Zend_View_Helper_Abstract
00035 {
00039     public $defaultModule;
00040 
00044     public $dispatcher;
00045 
00049     public $request;
00050 
00054     public $response;
00055 
00063     public function __construct()
00064     {
00065         $front   = Zend_Controller_Front::getInstance();
00066         $modules = $front->getControllerDirectory();
00067         if (empty($modules)) {
00068             require_once 'Zend/View/Exception.php';
00069             throw new Zend_View_Exception('Action helper depends on valid front controller instance');
00070         }
00071 
00072         $request  = $front->getRequest();
00073         $response = $front->getResponse();
00074 
00075         if (empty($request) || empty($response)) {
00076             require_once 'Zend/View/Exception.php';
00077             throw new Zend_View_Exception('Action view helper requires both a registered request and response object in the front controller instance');
00078         }
00079 
00080         $this->request       = clone $request;
00081         $this->response      = clone $response;
00082         $this->dispatcher    = clone $front->getDispatcher();
00083         $this->defaultModule = $front->getDefaultModule();
00084     }
00085 
00091     public function resetObjects()
00092     {
00093         $params = $this->request->getUserParams();
00094         foreach (array_keys($params) as $key) {
00095             $this->request->setParam($key, null);
00096         }
00097 
00098         $this->response->clearBody();
00099         $this->response->clearHeaders()
00100                        ->clearRawHeaders();
00101     }
00102 
00114     public function action($action, $controller, $module = null, array $params = array())
00115     {
00116         $this->resetObjects();
00117         if (null === $module) {
00118             $module = $this->defaultModule;
00119         }
00120 
00121         // clone the view object to prevent over-writing of view variables
00122         $viewRendererObj = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
00123         Zend_Controller_Action_HelperBroker::addHelper(clone $viewRendererObj);
00124 
00125         $this->request->setParams($params)
00126                       ->setModuleName($module)
00127                       ->setControllerName($controller)
00128                       ->setActionName($action)
00129                       ->setDispatched(true);
00130 
00131         $this->dispatcher->dispatch($this->request, $this->response);
00132 
00133         // reset the viewRenderer object to it's original state
00134         Zend_Controller_Action_HelperBroker::addHelper($viewRendererObj);
00135 
00136 
00137         if (!$this->request->isDispatched()
00138             || $this->response->isRedirect())
00139         {
00140             // forwards and redirects render nothing
00141             return '';
00142         }
00143 
00144         $return = $this->response->getBody();
00145         $this->resetObjects();
00146         return $return;
00147     }
00148 
00154     public function cloneView()
00155     {
00156         $view = clone $this->view;
00157         $view->clearVars();
00158         return $view;
00159     }
00160 }

Generated on Thu Apr 19 2012 17:01:18 for openbiz by  doxygen 1.7.2