Exemple #1
0
 /**
  * Initialize the view object
  *
  * $options may contain the following keys:
  * - neverRender - flag dis/enabling postDispatch() autorender (affects all subsequent calls)
  * - noController - flag indicating whether or not to look for view scripts in subdirectories named after the controller
  * - noRender - flag indicating whether or not to autorender postDispatch()
  * - responseSegment - which named response segment to render a view script to
  * - scriptAction - what action script to render
  * - viewBasePathSpec - specification to use for determining view base path
  * - viewScriptPathSpec - specification to use for determining view script paths
  * - viewScriptPathNoControllerSpec - specification to use for determining view script paths when noController flag is set
  * - viewSuffix - what view script filename suffix to use
  *
  * @param  string $path
  * @param  string $prefix
  * @param  array  $options
  * @throws IfwPsn_Vendor_Zend_Controller_Action_Exception
  * @return void
  */
 public function initView($path = null, $prefix = null, array $options = array())
 {
     if (null === $this->view) {
         $this->setView(new IfwPsn_Vendor_Zend_View());
     }
     // Reset some flags every time
     $options['noController'] = isset($options['noController']) ? $options['noController'] : false;
     $options['noRender'] = isset($options['noRender']) ? $options['noRender'] : false;
     $this->_scriptAction = null;
     $this->_responseSegment = null;
     // Set options first; may be used to determine other initializations
     $this->_setOptions($options);
     // Get base view path
     if (empty($path)) {
         $path = $this->_getBasePath();
         if (empty($path)) {
             /**
              * @see IfwPsn_Vendor_Zend_Controller_Action_Exception
              */
             require_once IFW_PSN_LIB_ROOT . 'IfwPsn/Vendor/Zend/Controller/Action/Exception.php';
             throw new IfwPsn_Vendor_Zend_Controller_Action_Exception('ViewRenderer initialization failed: retrieved view base path is empty');
         }
     }
     if (null === $prefix) {
         $prefix = $this->_generateDefaultPrefix();
     }
     // Determine if this path has already been registered
     $currentPaths = $this->view->getScriptPaths();
     $path = str_replace(array('/', '\\'), '/', $path);
     $pathExists = false;
     foreach ($currentPaths as $tmpPath) {
         $tmpPath = str_replace(array('/', '\\'), '/', $tmpPath);
         if (strstr($tmpPath, $path)) {
             $pathExists = true;
             break;
         }
     }
     if (!$pathExists) {
         $this->view->addBasePath($path, $prefix);
     }
     // Register view with action controller (unless already registered)
     if (null !== $this->_actionController && null === $this->_actionController->view) {
         $this->_actionController->view = $this->view;
         $this->_actionController->viewSuffix = $this->_viewSuffix;
     }
 }