public function setTemplate($template, array $params = [])
{
if ($template instanceof ViewModel) {
$view = $template;
} else {
$view = new ViewModel();
$view->setTemplate($template)->setVariables($params);
}
// Check if a common layout has to be used
if ($this->defaultLayout->hasModel()) {
$layoutModel = $this->defaultLayout->getModel();
$layoutModel->addChild($view, $this->defaultLayout->getTemplateCaptureTo());
$view = $layoutModel;
}
// Render the template and all of its children
$this->renderChildren($view);
$charset = isset($params['charset']) ? $params['charset'] : null;
$this->setBody($this->renderer->render($view), $charset);
}