簡體   English   中英

如何在Twig中將變量從父模板傳遞給子模板?

[英]How can I pass variable from parent template to child template in Twig?

我正在使用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>

我有子模板( category.html.twig ),它擴展了index.html.twig模板。

我可以將{{ notice_js_disabled }} var的值從索引模板傳遞到類別模板嗎?
notice_js_disabled從我的Symfony indexAction控制器返回。

UPD:我創建的問題的解決方案,接下來:我已經創建了一個名為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 %}

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

您需要做的是: - 在父模板中創建一個變量

{% set notice_js_disabled = value_received_from_indexAction %}

在您需要該值的模板之后

{{ notice_js_disabled }}

我希望它對你有所幫助

在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中,您可以在配置中設置一些自定義的全局變量等中描述的在這里

否則,您可以使用一些預定義的全局變量app變量。 在這里查看

我個人的建議是,您應該檢查您的應用程序模板邏輯。

希望能幫助到你!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM