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

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

问题描述

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

<头><title>title</title>{% 块样式表 %}<link href="{{ asset('css/main.css') }}" type="text/css" rel="stylesheet"/>{% 结束块 %}{% 阻止 JavaScript %}{% 结束块 %}<身体><div class="sidebar">{% block sidebar %}{% endblock %}</div><div class="content">{% 块内容 %}{% endblock %}

我的 Bundle 有自己的 layout.html.twig,由控制器扩展,例如 PostController.php 和 action showAction.

layout.html.twig 代码

{% 扩展 '::base.html.twig' %}{% 块样式表 %}{{ 父母()}}...某物{% 结束块 %}{% 块导航 %}...菜单列表{% 结束块 %}{% 块侧边栏 %}{% 渲染DevMyBundle:Page:sidebar"%}{% 结束块 %}

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

更新:请各位帮帮忙.应该有一个简单的答案.我读过树枝文档,但我是新手.如果我发布的这个问题不正确,请问我.

解决方案

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

{% 块侧边栏 %}{% 渲染ZaysoArbiterBundle:Test1\\Main:sidebar"%}{% 结束块 %}{% 阻止 JavaScript %}{{ 父母()}}<script>一些布局javascript</script>{% 渲染 "ZaysoArbiterBundle:Test1\\Main:sidebarjs" %}{% 结束块 javascript %}

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>

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

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 %}   

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.

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.

解决方案

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天全站免登陆