[英]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 %} </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.