Пример #1
0
 /**
  * Render full HTML page. A controller/action that uses XPage to render page
  * can render its view in Yii's standard way or render a constructed page with a
  * main view and multiple sidebars of left and right of the main content.
  *
  * @param bool $return
  *
  * @return mixed|string
  */
 public function render($return = false)
 {
     $this->registerAssets();
     /**
      * re-implement the render() of CController but not firing events
      * for beforeRender and afterRender as they are not really useful
      */
     $this->renderColumn('left');
     $this->renderColumn('main');
     $this->renderColumn('right');
     $content = '';
     foreach ($this->views['main'] as $renderedInfo) {
         $content .= "\n" . $renderedInfo['content'];
     }
     $this->views['content'] = $content;
     if (($layoutFile = $this->controller->getLayoutFile($this->controller->layout)) !== false) {
         $output = $this->controller->renderFile($layoutFile, $this->views, true);
     } else {
         $leftContent = '';
         foreach ($this->views['left'] as $renderedInfo) {
             $leftContent = "\n" . $renderedInfo['content'];
         }
         $rightContent = '';
         foreach ($this->views['right'] as $renderedInfo) {
             $rightContent = "\n" . $renderedInfo['content'];
         }
         $output = $leftContent . "\n" . $content . "\n" . $rightContent;
     }
     $output = $this->controller->processOutput($output);
     if ($return) {
         return $output;
     } else {
         echo $output;
     }
 }
Пример #2
0
 /**
  * Render a view file and return result
  *
  * If $controller is not set, the (localized) view file is searched in $viewPath
  * and the layout in $layoutFile is applied, if set.
  *
  * @param string $view name of view to render
  * @param array $data view data
  * @return string rendered content
  */
 private function render($view, $data = array())
 {
     if (($controller = $this->controller) === null) {
         static $controller;
         if ($controller === null) {
             $controller = new CController('pdffile');
         }
         $controller->layout = $this->layout;
         // Required to make console app play nicely during rendering
         Yii::app()->attachBehavior('consoleWorkaround', array('class' => 'ConsoleAppWorkaround', '_viewPath' => $this->baseViewPath, '_layoutPath' => $this->layoutPath));
         $file = Yii::app()->findLocalizedFile($this->viewPath . '/' . $view . '.php');
         if ($file === false) {
             throw new CException('Could not find view file ' . $view);
         }
         ini_set('implicit_flush', false);
         $content = $controller->renderInternal($file, $data, true);
         if ($controller->layout === null) {
             return $content;
         }
         return $controller->renderInternal($controller->getLayoutFile($controller->layout), array('content' => $content), true);
     } else {
         return $controller->render($view, $data, true);
     }
 }
Пример #3
0
 /**
  * @inheritDoc
  */
 public function getLayoutFile($layoutName)
 {
     if (($layoutFile = parent::getLayoutFile($layoutName)) === false) {
         $layoutFile = $this->getDefaultViewFile($layoutName, 'layouts');
     }
     return $layoutFile;
 }