![](/img/trans.png)
[英]Symfony2 / FOSUserBundle / Twig: Set variable in template to be accessable in Layout
[英]Symfony2/Twig - how to set template file contents as variable?
在Symfony 2.8中,我有了SharedBundle
,在那里我保存了其他bundle之间共享的视图和其他内容,包括应该由其他bundle视图扩展的整个布局。
该共享布局具有一些典型的块,对于不同的束, sidebar
块应该是不同的。
目前我做了一个丑陋的解决方法:
在SharedBundle
侧边栏容器中:
{% if sidebarcontent is defined %}
{{ sidebarcontent|raw }}
{% else %}
SIDEBAR NOT FOUND
{% endif %}
在扩展共享主视图的每个视图中的其他bundle(此处为: BundleA
)中:
{% extends 'SharedBundle:layout.html.twig' %}
{% block sidebar %}
{% include 'BundleA:_partials:sidebar.html.twig' %}
{% endblock %}
{% set sidebarcontent = block('sidebar') %}
但我觉得这看起来不太好看。 有没有更好的办法?
我认为这是一种有效的方法。 我能想到的唯一简化就是不使用变量sidebarcontent
。
你可以在if
语句中使用block('sidebar')
:
{% if block('sidebar')|length > 0 %}
{{ sidebarcontent|raw }}
{% else %}
SIDEBAR NOT FOUND
{% endif %}
在检查内容之前确保该块存在,因此使用空字符串初始化它:
{% block sidebar %}{% endblock %}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.