Задать вопрос
@e-hot

Как в Symfony2 грамотно включать блоки с javascript-кодом в два ( родитель-потомок ) twig-а?

Приветствую. Нужен совет по следующей ситуации:
1. Есть вложенные шаблоны, где базовый:
<html lang="ru">
    <head>
        ... 
        {% block stylesheets %}
            <link rel="stylesheet" href="{{ asset('/css/какие-то_стили.css') }}">
        {% endblock %}
    </head>
    
    <body>
        <div class="container">
            {% block body %}{% endblock %}
        </div>
        
        {% block javascripts %}
            <script src="{{ asset( '/js/какая-то_библиотека.js' ) }}" type="text/javascript"></script>
            ...
        {% endblock %}
    </body>
</html>


Далее следует несколько вложенных шаблонов, типа:
{% extends 'AcmeAppBundle:Default:body.html.twig' %}
{% block items %}
    ...
    <section class="content">
        {% block list%}{% endblock %}
    </section>
    ...
{% endblock%}


и на последнем уровне имеется:
{% extends 'AcmeAppBundle:Items:items.html.twig' %}

{% block list %}
            <div id="map"></div>

    {% block javascripts %}
        <script type="text/javascript">
            var map = L.map( 'map' ).setView( [ {{ center }} ], 13 );

            L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
                attribution: '&copy; <a rel="nofollow" href="http://osm.org/copyright">OpenStreetMap</a> contributors'
            }).addTo( map );

            {% for item in data %}
                var marker = L.marker( [ {{ item.getLa }},{{ item.getLo }} ], { icon: icon } ).addTo( map );
            {% endfor %}
        </script>
    {% endblock %}
{% endblock %}

примечание: здесь я вынужден был в js-код передавать php-данные через twig-переменные {{ var }} - такая вот мешанина синтаксисов

2. В базовом и последнем шаблонах присутствует конструкция {% block javascripts %}...{% endblock %}. Я так понял, что при сборке шаблонов SF2 оставляет в силе конструкцию из последнего шаблона, т.к. она по потоку первичней получается, а конструкцию из базового - уже не "видит" - в итоге когда смотрим код скомпилированной страницы через firebug браузера, получаем обрубленный код без нужных для последнего шаблона библиотек:
{% block javascripts %}
            <script src="{{ asset( '/js/какая-то_библиотека.js' ) }}" type="text/javascript"></script>
            ...
{% endblock %}


3. И сам вопрос: как грамотно подключать js-библиотеки и в двух ( и более ) twig-ах, которые относятся друг к другу как родитель-потомок? Или другими словами: как во вложенных шаблонах грамотно прописывать js-код или обозначать/формировать twig-блоки для js-кода, чтобы продолжали работать изначально подключенные в базовом шаблоне js-библиотеки? Если нужны какие еще подробности - спрашивайте.

Заранее благодарю за ответы. Спасибо.
  • Вопрос задан
  • 1392 просмотра
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы