/** * 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; }