Symfony framework. Шаблоны. Assets. Assetic. Stylesheets (Урок 8. Assets и Twig)
Итак, в предыдущем уроке мы научились использовать шаблонизатор Twig у Symfony framework. Теперь мы знаем, как написать простенький шаблон. Но не знаем, как подключать внешние компоненты (stylesheets, js, images) и т.д., а также создавать ссылки на собственные страницы. Начнем со второго. Для этого нужно вызвать функцию path(), ее аргументами выступают имя роута и (опционально) массив входящих параметров.
<a href="{{path('my_route')}}">Link</a>
Входящие параметры задаются следующим образом:
<a href="{{path('my_route', {'parameter': 'value'})">Link</a>
Для подключения этих компонентов Symfony framework использует Assets. Директория по умолчанию для Assets PathToBundle/public. Здесь есть директории для css, js и картинок. В простейшем случае подключение css осуществляется с помощью функции asset(), которая создаст фактический путь:
{% block stylesheets %}
<link href="{{ asset('/css/main.css') }}" type="text/css" rel="stylesheet" />
{% endblock %}
Так же подключаются картинки и js.
Но иногда нужно, например, подключить все содержимое директории (те же stylesheets или js). Естественно, в таком случае, можно подключить каждый файл по отдельности (как описано выше). Но можно поступить иначе (используя assetic):
{% stylesheets 'bundles/MyPortal/css/*' %}
<link rel="stylesheet" href="{{ asset_url }}"/>
{% endstylesheets %}
Таким образом будет подключено все содержимое директории.
Не забывайте только устанавливать assets:
php app/console assets:install
Если есть возможность, будет намного удобней заниматься разработкой в случае установки asset’ов в режиме симлинков:
php app/console assets:install --symlink
В таком случае вам не придется каждый раз выполнять установку при изменении содержимого в директории разработки.Если вы переходите на продакшн сборку, то не забудьте сделать
php app/console assetic:dump --env=prod --no-debug
На этом вроде все - теперь мы умеем использовать шаблоны у Symfony framework.