Esempio n. 1
0
 /**
  * Construct view script path
  *
  * Used by render() to determine the path to the view script.
  *
  * @param  string $action Defaults to action registered in request object
  * @param  bool $noController  Defaults to false; i.e. use controller name as subdir in which to search for view script
  * @return string
  * @throws \Zend\Controller\Exception with bad $action
  */
 public function getViewScript($action = null, $noController = null)
 {
     if (!$this->getInvokeArg('noViewRenderer') && $this->_helper->hasHelper('viewRenderer')) {
         $viewRenderer = $this->_helper->getHelper('viewRenderer');
         if (null !== $noController) {
             $viewRenderer->setNoController($noController);
         }
         return $viewRenderer->getViewScript($action);
     }
     $request = $this->getRequest();
     if (null === $action) {
         $action = $request->getActionName();
     } elseif (!is_string($action)) {
         throw new Exception('Invalid action specifier for view render');
     }
     if (null === $this->_delimiters) {
         $dispatcher = Front::getInstance()->getDispatcher();
         $wordDelimiters = $dispatcher->getWordDelimiter();
         $pathDelimiters = $dispatcher->getPathDelimiter();
         $pathDelimiters = array($pathDelimiters, '_');
         $this->_delimiters = array_unique(array_merge($wordDelimiters, (array) $pathDelimiters));
     }
     $action = str_replace($this->_delimiters, '-', $action);
     $script = $action . '.' . $this->viewSuffix;
     if (!$noController) {
         $controller = $request->getControllerName();
         $controller = str_replace($this->_delimiters, '-', $controller);
         $script = $controller . DIRECTORY_SEPARATOR . $script;
     }
     return $script;
 }