К содержанию
Medusa
Документация

TwigView

Medusa\Frontend\TwigView отвечает за серверный рендер Twig-шаблонов.

Инициализация класса

В рамках HTTP-запроса класс инициализируется автоматически при загрузке приложения: Medusa\Frontend\TwigView::addSrcPath(Medusa\Frontend\Path $srcPath). В метод передаётся source-путь, сформированный на основе src[].path из www/config/frontend.json.

Выбор frontend-сущности

Для работы с Twig используется фабричный метод Medusa\Frontend\TwigView::from($entity), где $entity — имя каталога внутри одного из зарегистрированных source-путей frontend:

use Medusa\Frontend;

$twigView = Frontend\TwigView::from('themes');

Рендер шаблона

Рендер выполняется методом $twigView->render($name, $data = []), где $name — имя каталога внутри зарегистрированного source-каталога frontend, например, внутри www/frontend/{entity}/, а $data — контекст Twig:

$result = $twigView->render('default', [
    'lang' => 'ru',
    'title' => 'Приветствие',
    'content' => "<h1>Добро пожаловать!</h1>\n\t<p>Это страница приветствия!</p>",
]);

$html = $result->html;

Метод render() возвращает объект с полем html. В этом поле находится готовая HTML-строка отрендеренного Twig-шаблона.

Пример содержимого файла www/frontend/themes/default/index.html.twig:

<!doctype html>
<html lang="{{ lang | default('en') }}">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>{{ title | default('Page') }}</title>
</head>
<body>
  {{ content | raw }}
</body>
</html>

Изменение имени шаблона

Для изменения имени рендерируемого Twig-файла используется метод $twigView->setIndexFilename($filename):

$twigView->setIndexFilename('view.html.twig');