Создайте событие в symfony2 для визуализации файла ветки

0

Я новичок в 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, чтобы данные передавались на базовую ветку.

  • 0
    Я не понимаю, почему вы называете это «событие». Почему бы вам просто не добавить этот блок div с информацией о версии в ваш базовый шаблон? Что именно вам нужно?
  • 0
    Я не хочу запрашивать среду в базовом шаблоне и решать, отображать ли мне блок версии или нет ... В "онлайн" я не регистрирую пакет, поэтому versionString () не доступен ... вот почему я ' я использую блок версии ... я хочу избежать ошибок / предупреждений Zend имеет ту же функцию, что и заполнитель ...
Теги:
twig
events

1 ответ

0

Я бы мог изменить способ, которым вы пытаетесь это сделать, используя больше возможностей Symfony и избегая определения Zend как "помощников". Это хорошее эмпирическое правило, чтобы поддерживать Twig как можно меньше, просто визуализируя представление данных, получаемых шаблонами.

Сначала определите переменную version в файлах parameters_dev.yml и parameters_test.ymlapp/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 %}

Надеюсь, поможет!

  • 0
    Это выглядит довольно просто (что хорошо). Есть только одна проблема, это не портативно. Если я использую это в других моих проектах, я должен все время вставлять (хорошо, не так много) блок кода в каждый проект.
  • 0
    Вы имеете в виду совершенно другой проект? (не тот же экземпляр Symfony, не то же самое приложение и пакеты Symfony)
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню