Во-первых, позвольте мне начать с кода, который я пытаюсь использовать:
{% if modal == true %} {% block header %}{% endblock %} {% block footer %}{% endblock %} {% endif %}
То, что я пытаюсь выполнить, состоит в том, чтобы не показывать мои блоки верхнего и нижнего колонтитов ТОЛЬКО, если переменная, называемая модальной, является истинной. У меня также есть это ниже выражения if:
{% block content %} {{ dump(modal) }} {% endblock %}
Что происходит здесь, так это то, что мое переопределение для освобождения блоков заголовка и нижнего колонтитула всегда выполняется независимо от того, истинно или нет значение модальности. Итак, я запускаю это, когда модально передается как false, и результат заключается в том, что верхний и нижний колонтитулы все еще не отображаются. Результат команды дампа точно показывает true или false, но условие всегда, кажется, оценивается как true в выражении if.
Могут ли блоки не быть завернутыми в условное утверждение, или есть что-то еще, что мне нужно сделать, чтобы сделать эту работу?
Спасибо за любую помощь, которую вы можете предложить.
Блоки не заботятся о какой-либо логике вокруг него, как сказано в документации :
Блок предоставляет способ изменить способ отображения определенной части шаблона, но он никоим образом не мешает логике вокруг него.
Вы должны поместить эту логику внутри блока, а не на внешнюю сторону, как вы можете видеть на последнем примере в этой статье.
определять
{% block footer %}Some standard content{% endblock %}
в шаблоне материнской ветви. Затем в шаблоне, где вы хотите решить, может ли отображаться содержимое нижнего колонтитула:
{% block footer %} {% if not modal == true %} {{ parent() }} {% endif %} {% endblock %}
Если модальное значение истинно – нижний колонтитул будет пустым, если нет – в нижнем колонтитуле будет напечатан «Некоторый стандартный контент»,