2012-02-10 2 views
1

Я использую symfony 2.0.9. Кодекс base.html.twig: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> 

узелок имеют собственный layout.html.twig, который расширяется с помощью контроллеров, например PostController.php с действием showAction.

Кодекс 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 %} 

Как получить доступ к блоку 'JavaScript' в base.html.twig от sidebar.html.twig, который вынесенным PageController, как это в layout.html. twig: {% render "DevMyBundle: Страница: sidebar"%} или Как я могу реорганизовать структуру моего шаблона. Что делать ?: Есть больше блоков на боковой панели. Каждый блок вызывает свои собственные js. Как? Благодарим за продвижение.

Обновление: пожалуйста, ребята, помогите. Должен быть простой ответ. Я прочитал ветку docs, но im newbe в ней. Если я задаю этот вопрос не правильно, спросите меня.

ответ

0

Один из способов - переместить боковую панель javascrpt в собственный шаблон. Нечто подобное в 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 %} 
+0

нет, что нет никакого способа для меня, потому что sidebar.html.twig не распространяется layout.html.twig или base.html.twig. Его вызвал {% render "DevMyBundle: Страница: sidebar"%} в блоке боковой панели, и я не могу записать в нем {% extends ':: layout/base.html.twig'%} И да, я хочу загрузить js last – ZloyPotroh

+0

Хорошо. Я вижу проблему сейчас. Никогда раньше не пытались направить вывод встроенного контроллера на несколько блоков. Не думайте, что это можно сделать. Но я опубликовал новое решение. – Cerad

+0

Хм .. это похоже на решение. Спасибо U. – ZloyPotroh