php - twig/php 布局的多重扩展

标签 php twig

我在弄清楚如何使用 Twig 模板解决以下问题时遇到了问题

我有一个系统,其中两个部分想要在彼此不认识的情况下更改布局中的 block 。我的模板的想法是

main.twig
<html><body>
{% block a %}{% endblock %}
{% block b %}{% endblock %}
</body></html>

replacea.twig
{% extends "main.twig" %}
{% block a %}hello{% endblock %}

replaceb.twig
{% extends "main.twig" %}
{% block b %}world{% endblock %}

我的问题是我不知道如何实现这一点,因为我调用 replacea 和 replaceb 的地方只共享一个“viewengine”,所以我能够收集所有渲染调用并批量处理它们。

我解决这个问题的第一个想法是扩展一个变量,比如“layout”,但是当我调用渲染布局时,所有模板中的布局将被替换为相同的,而不是 replaceb 中的“replacea.twig”和“main” .twig"在 replacea 中。

希望你能理解我的问题。

最佳答案

您需要使用“使用”——双关语不是故意的! :-)

main.twig
<html><body>
{% block a %}{% endblock %}
{% block b %}{% endblock %}
</body></html>

replacea.twig
{% block a %}hello{% endblock %}

replaceb.twig
{% extends "main.twig" %}
{% use "replacea.html" %}
{% block b %}world{% endblock %}

查看文档: https://twig.symfony.com/doc/tags/use.html

关于php - twig/php 布局的多重扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17709714/

相关文章:

php - 让自己摆脱 MySQL 报告循环?

php - 重命名 html、php 和 css 文件中的文本

php - 获取当前mysql insert的id

php - 正则表达式验证以包含 jquery 的 Enter 键

loops - 如何在 Twig 循环中连接两个 Twig 变量

php - PHP 中的 Redis session 忽略 php.ini 设置

php - 我如何在 Twig 日期过滤器中使用时区?

php - Symfony2 角色/组 - is_granted 未检测用户拥有的角色

Symfony2 : How to get request parameter

php - Twig - 从模板中获取所有 block