Задать вопрос
New_Horizons
@New_Horizons
Бред:

Как добавить переменную в определённый шаблон twig 1.*?

Twig 1.* используется как отдельная библиотека (не в составе symfony или типа того).

Есть определённый шаблон, который подключается в других шаблонах. Этот включаемый шаблон требует несколько переменных. Как мне указать их один раз, а не передавать каждый раз из контроллера? Наверное на примерах будет понятнее.

Для тех, кто знаком с Laravel:
Мне нужен аналог \View::composer();

Допустим делаем интернет-магазин, несколько страниц, у большинства есть шапка и подвал.
В шапке нам нужно выводить список категорий.

Примерно так происходит рендер в контроллере:
spoiler

protected function render(string $view, array $params = [])
{
	$loader = new FilesystemLoader(base_path('/resources'));

	$twig = new Environment($loader, ['cache' => base_path('/var/cache/twig'), 'debug' => true]);

	$content = $twig->render($view, $params);

	return Response::create($content);
}


Есть шаблон 'template.twig'
spoiler

<!DOCTYPE html>
<html lang="ru">
	<head>
	<title>Интернет-магазин</title>
	</head>
	<body>
		<header>
			<ul>
				{% for category in categories %}
					<li><a href="{{ category.url}}">{{ category.name}}</a></li>
				{% endfor %}
			</ul>
		</header>
		<div class="content">
			{% block content %}{% endblock %}
		</div>
		<footer></footer>
	</body>
</html>


И есть несколько шаблонов, которые его расширяют.
spoiler

{% extends "template.twig" %}

{% block content %}
	Тут какой-то контент, у каждой страницы свой
{% endblock %}



Нужно сделать так, чтобы переменная categories была всегда доступна в template.twig
  • Вопрос задан
  • 165 просмотров
Подписаться 2 Простой Комментировать
Решения вопроса 1
solotony
@solotony
покоряю пик Балмера
я завожу в twig 1 глобальную переменную типа "website" , а уже внутри шаблонов дергаю ее методы по мере необходимости

addGlobal
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы