Example #1
0
 /**
  * Initialize View object
  *
  * Initializes {@link $view} if not otherwise a Zend_View_Interface.
  *
  * If {@link $view} is not otherwise set, instantiates a new Zend_View
  * object, using the 'views' subdirectory at the same level as the
  * controller directory for the current module as the base directory.
  * It uses this to set the following:
  * - script path = views/scripts/
  * - helper path = views/helpers/
  * - filter path = views/filters/
  *
  * @return \Zend\View\ViewEngine
  * @throws \Zend\Controller\Exception if base view directory does not exist
  */
 public function initView()
 {
     $broker = $this->broker();
     if (!$this->getInvokeArg('noViewRenderer') && $broker && $broker->hasPlugin('viewRenderer')) {
         return $this->view;
     }
     if (isset($this->view) && $this->view instanceof View\Renderer) {
         return $this->view;
     }
     $request = $this->getRequest();
     $module = $request->getModuleName();
     $dirs = $this->getFrontController()->getControllerDirectory();
     if (empty($module) || !isset($dirs[$module])) {
         $module = $this->getFrontController()->getDispatcher()->getDefaultModule();
     }
     $baseDir = dirname($dirs[$module]) . DIRECTORY_SEPARATOR . 'views';
     if (!file_exists($baseDir) || !is_dir($baseDir)) {
         throw new Exception('Missing base view directory ("' . $baseDir . '")');
     }
     $this->view = new View\PhpRenderer();
     $this->view->resolver()->addPath($baseDir . '/scripts');
     return $this->view;
 }