【问题标题】:How can I pass variable from parent template to child template in Twig?如何在 Twig 中将变量从父模板传递到子模板?
【发布时间】:2016-10-04 10:47:51
【问题描述】:

我正在使用 Symfony 和 Twig,但找不到下一个问题的解决方案: 在我的父模板 (index.html.twig) 我有这样的代码:

<noscript>
    {% block noscript %}
    <div class="alert alert-warning">
        <strong>{% block notice %}{{ notice_js_disabled }}{% endblock %}&nbsp;</strong>
        {% block message %}{{ js_disabled }}{% endblock %}
    </div>
    {% endblock %}
</noscript>

我有扩展 index.html.twig 模板的子模板 (category.html.twig)。

我可以将{{ notice_js_disabled }} var 的值从索引模板传递到类别模板吗?
notice_js_disabled 从我的 Symfony indexAction 控制器返回。

统一更新: 我创建的问题的解决方案,接下来: 我制作了名为 main.html.twig 的基本模板,我在其中从控制器渲染元素:

{% block header %}
   {{ render(controller('StoreBundle:Header:index')) }}
{% endblock %}

然后,在我的 index.html.twig 文件中,我做了接下来的事情:

{% extends 'Store/tpl/main.html.twig' %}
{% block title %}{{ title }}{% endblock %}
{% block content %}
    <p class="currentPage" hidden>home</p>
    {{ parent() }}
{% endblock %}

我不确定它是否正确的解决方案,但它的工作:)

【问题讨论】:

    标签: php html symfony templates twig


    【解决方案1】:

    您需要做的是: - 在父模板中创建一个变量

    {% set notice_js_disabled = value_received_from_indexAction %}
    

    在你需要那个值的模板之后

    {{ notice_js_disabled }}
    

    希望对你有帮助

    【讨论】:

      【解决方案2】:

      在 Twig 中,您可以将一些变量传递给子模板的唯一方法是通过 include 标记。

      {# template.html will have access to the variables from the current context and the additional ones provided #}
      {% include 'template.html' with {'foo': 'bar'} %}
      
      {% set vars = {'foo': 'bar'} %}
      {% include 'template.html' with vars %}
      

      但是,通过这种方式,您并没有从子模板扩展某些父模板,而是在做相反的事情:您将一个子模块放入当前模板中。

      在 symfony 中只有几个全局变量 您可以在配置中设置一些自定义全局变量,如here 所述

      否则你可以使用一些预定义的全局变量,app 变量。 (check it out here)

      我个人的建议是您应该检查您的应用程序模板逻辑。

      希望对你有帮助!

      【讨论】:

      • 是的,我已经考虑过了 - 我需要重写我的模板,因为我走错了路。感谢您的帮助)
      猜你喜欢
      • 2023-03-24
      • 2020-09-27
      • 1970-01-01
      • 2017-07-05
      • 1970-01-01
      • 2017-07-02
      • 1970-01-01
      • 2012-09-09
      • 1970-01-01
      相关资源
      最近更新 更多