Example #1
0
 /**
  * @param Request $request
  * @param Response $response
  * @return string
  * @throws RuntimeException
  */
 public function render(Request $request, Response $response)
 {
     $view = $response->getView();
     if (!$view instanceof View) {
         throw new RuntimeException('No View object set; unable to render view');
     }
     $response->setContentTypeHeader('html');
     $dir = strtolower($request->getController());
     if (null !== $view->getScriptDir()) {
         $dir = $view->getScriptDir();
     }
     $filename = strtolower($request->getAction());
     if (null !== $view->getScript()) {
         $filename = $view->getScript();
     }
     $scriptFile = sprintf('%s/views/%s/%s.phtml', APP_DIR, $dir, $filename);
     $scriptFile = str_replace('/', DIRECTORY_SEPARATOR, $scriptFile);
     if (!file_exists($scriptFile)) {
         throw new RuntimeException('View script not found: ' . $scriptFile);
     }
     unset($dir, $filename);
     ob_start();
     include $scriptFile;
     $body = ob_get_clean();
     if (null !== $view->getLayout()) {
         $layoutFile = sprintf('%s/views/layout/%s.phtml', APP_DIR, $view->getLayout()->getScript());
         $layoutFile = str_replace('/', DIRECTORY_SEPARATOR, $layoutFile);
         if (file_exists($layoutFile)) {
             $view->layout()->content = $body;
             unset($viewScript, $body);
             ob_start();
             include $layoutFile;
             $body = ob_get_clean();
         }
     }
     return $body;
 }