/** * 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; }