Twig:来自不同控制器的头块控制控制器、不同、Twig

2023-09-07 00:44:14 作者:伊人回眸╮泪倾城

我使用 symfony 2.0.9.base.html.twig 代码:

I use symfony 2.0.9. Code of base.html.twig:

<html>
<head>
    <title>title</title>        
    {% block stylesheets %}
        <link href="{{ asset('css/main.css') }}" type="text/css" rel="stylesheet" />
    {% endblock %}        
    {% block javascript %}
    {% endblock %}
</head>
<body>
<div class="sidebar">{% block sidebar %}{% endblock %}</div>
<div class="content">{% block content %}{% endblock %}</div>            
</body>

我的 Bundle 有自己的 layout.html.twig,它被控制器扩展,例如 PostController.php 带有动作 showAction.

My Bundle have own layout.html.twig, which being extended by Controllers, for example PostController.php with action showAction.

layout.html.twig 的代码

Code of layout.html.twig

{% extends '::base.html.twig' %}
{% block stylesheets %}
    {{ parent() }}
    ...something
{% endblock %}
{% block navigation %}
    ...list of menus
{% endblock %}
{% block sidebar %}
    {% render "DevMyBundle:Page:sidebar" %}
{% endblock %}   

如何从 sidebar.html.twig 访问 base.html.twig 中的块javascript",它由 PageController 在 layout.html.twig 中像这样呈现: {% render "DevMyBundle:Page:sidebar" %} 或我怎样才能重新组织我的模板结构.为什么?:侧边栏中可能有更多块.每个块都调用自己的js.如何?感谢您的提前.

How can access to block 'javascript' in base.html.twig from sidebar.html.twig, which rendered by PageController like this in layout.html.twig: {% render "DevMyBundle:Page:sidebar" %} or How can i reorganize structure of my templating. What for?: There are more blocks in sidebar may be. Each block call its own js. How? Thanks for advance.

更新:伙计们,请帮忙.应该有一个简单的答案.我读过twig docs,但我是新手.如果我发布的这个问题不正确,问我.

Update: please, guys, help. There should be a simple answer. I have read twig docs, but im newbe in it. If i post this question not correctly, ask me.

推荐答案

一种方法是将侧边栏 javascrpt 移动到它自己的模板.layout.html.twig 中的类似内容

One way would be to move the sidebar javascrpt to it's own template. Something like this in layout.html.twig

{% block sidebar %}
    {% render "ZaysoArbiterBundle:Test1\Main:sidebar" %}
{% endblock %} 

{% block javascript %}
    {{ parent() }}
    <script>Some layout javascript</script>
    {% render "ZaysoArbiterBundle:Test1\Main:sidebarjs" %}
{% endblock javascript %}