Exemplo n.º 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 \Zend\Controller\Action\Exception
  * @return void
  */
 public function initView($path = null, $prefix = null, array $options = array())
 {
     if (null === $this->view) {
         $this->setView(new View\PhpRenderer());
     }
     // 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();
         /*
         * Commenting until we can refactor inflector
                     if (empty($path)) {
            throw new Action\Exception('ViewRenderer initialization failed: retrieved view base path is empty');
                     }
         */
     }
     if (null === $prefix) {
         $prefix = $this->_generateDefaultPrefix();
     }
     /**
      * @todo resolver() is not in Renderer interface...
      * @todo Should helpers/filters be added here as well?
      */
     $this->view->resolver()->addPath($path . '/scripts');
     // 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;
     }
 }
Exemplo n.º 2
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\Renderer
  * @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;
 }