Pull to refresh

Исследование возможностей view.yml

Reading time 2 min
Views 1.1K
Небольшое исследование на тему, какие все-таки возможности поддерживает view.yml в symfony.

Мне давно хотелось, чтобы все css и js файлы были подключены в одном месте. Из-за того, что я постоянно пользуюсь условными комментариями для отделения «богомерзких» браузеров, мне приходилось хранить все файлы прямо в шаблоне. В случае, если шаблонов — несколько, начинались проблемы из разряда «там добавили, здесь забыли». Поэтому было решено поковыряться в недрах symfony, благо в changelog к 1.2 русским по белому написано: добавлена поддержка условных комментариев.

Что бы хотелось видеть?

  • Поддержка условных комментариев для IE;
  • Поддержка медиа устройств в CSS;
  • Возможность изменять положение подключаемых библиотек относительно друг друга.

И, что характерно, все это есть. Только непонятно, почему про это ни слова не сказано в документации к symfony. Видимо, из-за некрасивости получаемого yml.
<code>stylesheets: [{main.ie.css: {position: 'last', condition: 'lt IE 8', media: 'screen'}}, {frontend.css: {position: 'first', media: 'screen'}}]
</code>


Что это за фигня?:)


Все это генерируется вот в такой PHP массив:
$stylesheets = array(
  array('main.ie.css' => array('position' => 'last', 'condition' => 'lt IE 8', 'media' => 'screen')),
  array('frontend.css' => array('position' => 'first', 'media' => 'screen'))
);


К чему такие сложности, спросите вы, когда можно и вот так:
$stylesheets = array(
  'main.ie.css' => array('position' => 'last', 'condition' => 'lt IE 8', 'media' => 'screen'),
  'frontend.css' => array('position' => 'first', 'media' => 'screen')
);


Я тоже верил, что можно. Тут всплывает баг толи обработчика yaml, толи sfViewConfigHandler, результатом чего становится Fatal Error.

Короче говоря, пока все это попахивает хаком, и, судя по всему, именно поэтому это все и не документировано.

А все-таки, что все это значит?

  • main.ie.css — очевидно, это имя подключаемого файла.
  • position — Позиция библиотеки относительно остальных. Может быть либо first, либо last. По-моему стоит не выпендриваться и просто указывать библиотеки именно в том порядке, в каком их нужно подключать.
  • condition — Условие для условного комментария. Очевидно, что если этот ключ не указан — условные комментарии не будут использованы. За подробностями о синтаксисе условных комментариев в MSDN.
  • media — тип устройства. За подробностями про типы устройств — в документацию по CSS.


  • Вот, собственно, и все:)

    P.S. Да, я буду счастлив, если кто-нибудь подскажет мне, как сделать подсветку кода.
    P.P.S. Исследование проводилось на symfony 1.2.8
Tags:
Hubs:
+2
Comments 6
Comments Comments 6

Articles