Новое в Symfony 2.7: Новый компонент Asset

До Symfony 2.7, управление веб-ресурсами было реализовано в компоненте шаблонов. Дизайн этой подсистемы страдал от некоторых ошибок (требовался request, потому что она опиралась на экземпляр класса Request) и ограничений (например, для управления  списком надежных URL-адресов).

Для того, чтобы решить эти вопросы, Symfony 2.7 вводит новый компонент под названием Asset. Управление веб-ресурсами не отделимо от компонента Templating, что позволяет использовать его вне Symfony (например, в микрофреймворке Silex).

Новый компонент Asset решает задачи генерацией URL и управления версиями веб-ресурсов, таких как CSS стили, файлы JavaScript и файлы изображений. Это означает, что ваши шаблоны становятся более компактными и ваше приложение более гибким, потому что вы можете менять местоположение и версию ваших ресурсов, всего лишь небольшими правками в файле конфигурации.

Изменения конфигурации

Старые assets_* опции, которые определены в разделе templating теперь определяются в assets и их имена теряют префикс assets. Предыдущие варианты записи в настоящее время считаются устаревними (они исчезнут в Symfony 3.0), но сейчас компонент Asset обновляет их автоматически (можете ничего не менять в конфигурации вашего приложения, если вы не хотите):

# Symfony 2.6
# app/config/config.yml
framework:
    templating:
        assets_version: 'v5'
        assets_version_format: '%%s?version=%%s'
        assets_base_urls:
            http: ['http://cdn.example.com']
            ssl:  ['https://secure.example.com']
        packages:
            # ...

# Symfony 2.7
# app/config/config.yml
framework:
    assets:
        version: 'v5'
        version_format: '%%s?version=%%s'
        base_path: ~
        base_urls: ['http://cdn.example.com', 'https://secure.example.com']
        packages:
            # ...

Небольшие изменении претерпела опция base_urls, в которой теперь объединяются обычные (http) и безопасные (ssl) URL.

Изменения в шаблонах функций

В Symfony 2.7, в хорошо известной Twig функция assetic ()  были удалены дополнительные аргументы absolute и version :

{# Symfony 2.6 #}
{{ asset('logo.png', absolute = true) }}

{# Symfony 2.7 #}
{{ absolute_url(asset('logo.png')) }}


{# Symfony 2.6 #}
{{ asset('logo.png', version = 'v5') }}

{# Symfony 2.7 (do nothing, version is automatically appended) #}
{{ asset('logo.png') }}

{# use the asset_version() function if you need to output it manually #}
{{ asset_version('logo.png') }}

Примеры использования

Читайте документацию компонента Asset чтобы узнать больше об особенностях этого нового компонента. Вы узнаете, как реализовать такие трюки, как например:

Определить ярлыки для бандла ресурсов

# app/config/config.yml
framework:
    assets:
        packages:
            app:
                base_path: /bundles/app/
            img:
                base_path: /bundles/app/images/
{{ asset('images/me.png', 'app') }}
{# /bundles/app/images/me.png #}

{{ asset('me.png', 'img') }}
{# /bundles/app/images/me.png #}

Расширенное версионирование ресурсов

# app/config/config.yml
framework:
    assets:
        version: 'v5'
        version_format: '%%s?version=%%s'
        packages:
            avatar:
                base_path: /img/avatars
            doc:
                base_path: /docs/pdf
                version_format: '%2$s/%1$s'
{{ asset(user.uuid ~ '.png', 'avatar') }}
{# /img/avatars/1b0ae6a5-1c39-4b49-bcc1-2a787c8ec139.png?version=v5 #}

{{ asset('contracts/signup.pdf', 'doc') }}
{# /v5/docs/pdf/contracts/signup.pdf #}

Контекстно-зависимые CDNs

# app/config/config.yml
framework:
    assets:
        base_urls:
            - 'http://static1.example.com/images/'
            - 'https://static2.example.com/images/'
{{ asset('logo.png') }}
{# in a regular page: http://static1.example.com/images/logo.png #}
{# in a secure page:  https://static2.example.com/images/logo.png #}

Источник: http://symfony.com/blog/new-in-symfony-2-7-the-new-asset-component

Добавить комментарий

Ваш адрес email не будет опубликован.

16 + два =