Example #1
0
 /**
  * Returns a URL based on provided parameters.
  *
  * @param string $url URL Name
  * @param array $params
  * @return string URL
  */
 public function build(string $url, array $params = [])
 {
     return \CoreTyson\h(Router::getInstance()->url($url, $params));
 }
 /**
  * Renders and returns output for given template filename with its
  * array of data.
  *
  * @param string $template Filename of the view
  * @param array $data Data to include in rendered view.
  * @return string Rendered output
  */
 public function render($template, $data = [])
 {
     if ($this->_options["autoescape"]) {
         $data = \CoreTyson\h($data);
     }
     $initialBlocks = count($this->_activeRecord);
     $this->_currentFile = $template;
     $this->_currentData = $data;
     $content = $this->_evaluate($template, $data);
     if (isset($this->_parents[$template])) {
         $this->_stack[] = $this->fetch('content');
         $this->setBlock('content', $content);
         $content = $this->render($this->_parents[$template]);
         $this->setBlock('content', array_pop($this->_stack));
     }
     $remainingBlocks = count($this->_activeRecord);
     if ($initialBlocks !== $remainingBlocks) {
         end($this->_activeRecord);
         throw new LogicException(sprintf('The "%s" block was left open. Blocks are not allowed to cross files.', key($this->_activeRecord)));
     }
     return $content;
 }