Example #1
0
 /**
  * Renders template using provided data.
  *
  * This method is managing exceptions thrown inside to bubble up to current
  * level of output buffering at least.
  *
  * @param string $template template name to render
  * @param variable_space|array $data data to use on rendering template
  * @return string rendered template
  */
 public static function render($template = null, $data = null)
 {
     $oblevel = ob_get_level();
     try {
         if ($data === null || is_array($data)) {
             $data = variable_space::fromArray((array) $data);
         }
         // @todo consider selecting engine depending on current configuration instead of using current view's one
         return static::engine()->render($template, $data);
     } catch (\Exception $e) {
         while ($oblevel < ob_get_level()) {
             ob_end_clean();
         }
         static::error(log::exception('[%s:%s in %s@%d]', get_class($e), $e->getMessage(), $e->getFile(), $e->getLine()));
         return '';
     }
 }