我找到下一个问题的解决方案:在我的父模板( 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 %}
我不确定它是否正确解决方案,但它的工作:)
2 回答
您需要做的是: - 在父模板中创建一个变量
在您需要该值的模板之后
我希望它对你有所帮助
在Twig中,您可以将一些变量传递给子模板的唯一方法是使用 include 标记 .
但是,通过这种方式,您不会从子项扩展某些父模板,但是您正在执行相反的操作:您将子模块放入当前模板中 .
在symfony中只有几个变量 global 您可以在配置中设置一些自定义全局变量,如here所述
否则,您可以使用一些预定义的全局变量app变量 . (check it out here)
我个人的建议是,您应该检查您的应用程序模板逻辑 .
希望能帮助到你!