Как динамически сохранить все пути .css и затем передать их в сборку для сжатия? (в Symfony 2) - PullRequest
2 голосов
/ 01 июля 2011

Мне трудно разобраться с таблицами стилей и javascripts.

Все примеры для instaltic + twig предполагают, что вы заранее знаете все пути файлов, которые вам понадобятся.

Предположим, я хочу создать страницу «О программе».

Шаблон «about.html.twig» происходит от «layout.html.twig».

Макет должен иметь пару.css и .js, которые будут использоваться на всем сайте.

Шаблон about должен загружать другие специфичные для него файлы .css и .js.

Таким образом, блок стилей выглядит примерно такthis:

{% block stylesheets %}
{{ parent() }}
<link href='bla'> {# more stylesheets #}
{% endblock %}

Тогда как мне использовать сборку в этом случае?

Должен ли я отправлять все ресурсы сайта с самого начала, потому что даже тогда производительность будетboosted?

Проблема в том, что могут быть конфликты между .css, иногда вы загружаете .css просто для того, чтобы переопределить ваши собственные базовые настройки, поэтому вы не можете просто создать один .css для всего сайта.

Я тоже попробовал сеtting массив для хранения всех путей, затем цикл и передача путей в сборку.Но похоже, что синтаксис css [] = 'another_path.css' не поддерживается веткой.Вы должны установить весь массив в одном назначении

1 Ответ

2 голосов
/ 01 июля 2011

Да, вы правы, синтаксис для сборочных расширений Twig ожидает, что вы знаете все ресурсы, которые хотите включить. Но это сделано специально, потому что для производства предполагается, что вы выгрузите комбинированный и минимизированный CSS / JS, чтобы он мог обрабатываться веб-сервером без участия PHP.

Мое лучшее предложение для вас - определить все ваши таблицы стилей, которые вы с радостью добавите на все страницы своего сайта, и сделать так, чтобы их запросила сборочная таблица стилей.

Затем для определенных страниц, где вам нужны дополнительные таблицы стилей, вы можете сделать второй сборочный вызов, где это необходимо.

layout.html.twig

// do common styles
{% stylesheets 'css/reset.css'
               'css/960.css'
               'css/foobar.css'
               filter='yui_css' %}
    <link rel="stylesheet" media="screen" href="{{ asset_url }}" />
{% endstylesheets %}

// use an empty block for extra styles
{% block extra_styles %}{% endblock %} 

someview.html.twig

{% block extra_styles %}
    {% stylesheets 'css/about1.css'
                   'css/about2.css'
                   filter='yui_css' %}
        <link rel="stylesheet" media="screen" href="{{ asset_url }}" />
    {% endstylesheets %}
{% endblock %}

Другое решение, которое, возможно, проще, состоит в том, чтобы просто реорганизовать ваш CSS, чтобы вы могли загружать все стили за один раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...