Twig:来自不同控制器的头块控制 [英] Twig: head blocks control from different controllers

查看:25
本文介绍了Twig:来自不同控制器的头块控制的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用 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 %}

这篇关于Twig:来自不同控制器的头块控制的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆