我正在与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的值从索引模板传递到类别模板吗?
我的Symfony indexAction 控制器返回notice_js_disabled
。
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 %}
我不确定这是正确的解决方案,但它的工作是:)
答案 0 :(得分:0)
您需要做的是以下内容: - 在父模板中创建一个变量
SOURCE FORMAT
在您需要该值的模板之后
{% set notice_js_disabled = value_received_from_indexAction %}
我希望它可以帮到你
答案 1 :(得分:-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)
我个人的建议是,您应该检查您的应用程序模板逻辑。
希望它有所帮助!