Задать вопрос
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
  • Вопрос задан
  • 172 просмотра
Подписаться 2 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
solotony
@solotony
покоряю пик Балмера
я завожу в twig 1 глобальную переменную типа "website" , а уже внутри шаблонов дергаю ее методы по мере необходимости

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

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽