Я новичок в symfony2, и я ищу решение для создания события, которое отображает файл twig.
Предположим, у нас есть базовый шаблон
<!DOCTYPE html>
<html>
<head>
{% block meta %}{% endblock %}
<title>{% block title %}Welcome!{% endblock %}</title>
{% block stylesheets %}{% endblock %}
</head>
<body data-cachetime="{{ cacheTimeStamp() }}">
{% block header %}{% endblock %}
<div id="content">
<div class="container">
{% block content %}{% endblock %}
</div>
</div>
{% block footer %}{% endblock %}
{% block version %}{% endblock %}
{% block javascripts %}{% endblock %}
{% block trackers %}{% endblock %}
</body>
</html>
Как вы можете видеть, у меня есть блок "версия". Я создал VersionBundle, который читает версию из файла. Шаблон версии twig
{% block version %}
<div id="version"><p>Version: {{ versionString() }}</p></div>
{% endblock %}
вызывает "ViewHelper" (я пришел из Zend ;-)), который вызывает функцию из VersionBundle. Но теперь сложная часть: VerionBundle зарегистрирован только для "dev" и "test" Environment в AppKernel. Вот почему я создаю блок 'version' вместо вызова ViewHelper непосредственно в базовом файле twig.
Но я не знаю, как создать событие для визуализации шаблона версии twig, чтобы данные передавались на базовую ветку.
Я бы мог изменить способ, которым вы пытаетесь это сделать, используя больше возможностей Symfony и избегая определения Zend как "помощников". Это хорошее эмпирическое правило, чтобы поддерживать Twig как можно меньше, просто визуализируя представление данных, получаемых шаблонами.
Сначала определите переменную version
в файлах parameters_dev.yml
и parameters_test.yml
(в app/config
). Пример:
parameters:
version: 32
Определите его как version: ~
в parameters.yml
.
Сделайте эту переменную доступной во всех шаблонах Twig в файле app/config/config.yml
:
twig:
globals:
version: %version%
Затем в определении блока version
выполните следующие действия:
{% block version %}
{% if version is not null %}
<div id="version"><p>Version: {{ version }}</p></div>
{% endif %}
{% endblock %}
Надеюсь, поможет!