예제 #1
0
파일: XPage.php 프로젝트: hung5s/yap
 /**
  * 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 the view file
  * @param string $viewName Name of the view
  * @param array $viewData Data for extraction
  * @return string The rendered result
  * @throws CException
  */
 public function renderView($viewName, $viewData = null)
 {
     //resolve the file name
     if (($viewFile = $this->getViewFile($viewName)) !== false) {
         //use controller instance if available or create dummy controller for console applications
         if (isset(Yii::app()->controller)) {
             $controller = Yii::app()->controller;
         } else {
             $controller = new CController(__CLASS__);
         }
         //render and return the result
         return $controller->renderFile($viewFile, $viewData, true);
     } else {
         //file name does not exist
         throw new CException('View "' . $viewName . '" does not exist!');
     }
 }