Paw*_*kov 5 html php templates symfony 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>
Run Code Online (Sandbox Code Playgroud)
我有子模板(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 %}
Run Code Online (Sandbox Code Playgroud)
然后,在我的index.html.twig文件中,我做了下面的事情:
{% extends 'Store/tpl/main.html.twig' %}
{% block title %}{{ title }}{% endblock %}
{% block content %}
<p class="currentPage" hidden>home</p>
{{ parent() }}
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
我不确定它是否正确解决方案,但它的工作:)
小智 -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 %}
Run Code Online (Sandbox Code Playgroud)
然而,通过这种方式,您不会从子模板中扩展某些父模板,而是以相反的方式进行:将子模块放置到当前模板中。
symfony 中只有几个全局变量您可以在配置中设置一些自定义全局变量,如下所述
否则,您可以使用一些预定义的全局变量,即 app 变量。(在这里查看)
我个人的建议是您应该检查您的应用程序模板逻辑。
希望能帮助到你!