Slim 2 Render Direct HTML

У меня есть старый проект, над которым я работаю, использую Slim версии 2. Не могу перейти на 3.

Я пытаюсь интегрировать веточку в стройную 2 сохраняя при этом старый рендерер slim2 по умолчанию.

В настоящее время у меня есть это.

class TwigView extends \Slim\View
{
public function rendertwig($template,$data = array()){
global $twig;

$twigResults = $twig->render($template,array('test' => '1'));

$data = array_merge($this->data->all(), $data);
return $this->render($twigResults, $data);
}

}

$view = new TwigView();

$config['view'] = $view; //@JA - This command overides the default render method.

//@JA - Intialize Slim
$app = new \Slim\Slim($config);

Идея в том, что я бы назвал это высказыванием $app->view->rendertwig('file.twig') когда мне нужно визуализировать шаблоны веток и использовать $app->render('template.php') для всех других шаблонов, которые используют метод шаблонов slim2 по умолчанию.

Однако я получаю ошибку, потому что в моей функции rendertwig функция $ this-> render () требует имя шаблона для первого параметра. Есть ли способ, которым я могу визуализировать результаты непосредственно из ветки в тонкий движок без файла шаблона?

Я знаю, что плохо иметь два шаблонизатора, но со временем я переключу все на Twig, но мне нужно это как временное решение, пока я не смогу все исправить.

Когда я проверял объект вида slim, он определил его как метод визуализации, который объяснит проблему.

protected function render($template, $data = null)
{
$templatePathname = $this->getTemplatePathname($template);
if (!is_file($templatePathname)) {
throw new \RuntimeException("View cannot render `$template` because the template does not exist");
}

$data = array_merge($this->data->all(), (array) $data);
extract($data);
ob_start();
require $templatePathname;

return ob_get_clean();
}

0

Решение

Я не знаю, если это плохая форма, но я сделал это как временное решение.

class TwigView extends \Slim\View
{
public function rendertwig($template,$data = array()){
global $twig;

$twigResults = $twig->render($template,array('test' => '1'));
echo $twigResults;
}

}

Я видел, что все, что делал метод рендеринга, — это просто требовал шаблон, поэтому я решил, что безопасно просто повторить результаты из движка шаблонов веточек? Похоже, это работает из моего теста.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]