Содержание


HeadStyle Helper


HeadStyle Helper



Элемент <style>  используется для включения таблицы стилей (CSS) в элемент <head>.

Важно: Используйте HeadLink для подключения файлов CSS. Для подключения внешних файлов. HeadStyle используется для внедрения CSS непосредственно на страницу (inline).


HeadStyle поддерживает несколько методов для добавления и настройки таблицы стилів:

appendStyle($content, $attributes = array())

offsetSetStyle($index, $content, $attributes = array())

prependStyle($content, $attributes = array())

setStyle($content, $attributes = array())


$content – непосредственно обявление(реализация) CSS.

$attributes – любіе дополнительніе атрибуті, которіе нужно добавить в тег <style>: lang, title, media, dir и другие.

Важно: Установка условных комментариев.
HeadStyle предоставляет возможность обернуть тег <style
> в условные коментарии, которые помогут спряжать их от обработки в определенных браузерах.
Для их установки передайте значение «conditional» как параметр $attributes при вызове метода:

 adding scripts
$this->headStyle()->appendStyle($styles, array('conditional' => 'lt IE 7'));

Так же HeadStyle позволяет делать захват объявления стилей. Это полезно, когда объявления стилей делается в скрипте, а потом размещается в нужном месте. Демонстрация такого использования будет показана в следующем примере.

Для быстрого объявления воспользуйтесь методом headStyle(). Синтаксистакой: headStyle($content$placement = 'APPEND', $attributes = array()).$placement -  можетприниматьзначения: «APPEND», «PREPEND», «SET».

HeadStyle перекрывает за append(), offsetSet(), prepend(), set() для принудительного использования специальных методов, перечисленных выше. Внутри себя он сохраняет все элементы как маркер  stdClass, который в дальнейшем сериализуется, используя метод itemToString() .Это дает возможность проверки элементов, находящихся в стеке, и модификации их просто изменяя возвращаемый объект.

Помощник HeadStyleявляется частной реализацией помощника Placeholder.

Важно: По умолчанию в Zend Framework используется кодировка UTF-8.
Но  кодировка во View может устанавливаться независимо для каждого объекта вручную с помощью метода setEncoding(). Но, Zend\View\Interface не определяет доступ к кодировкам, поэтому если Вы используете не стандартный помощник, то возможно у него не будет доступа к методу  getEncoding(), который определяет, какую кодировку выбрать.
Если нужно будет использовать отличную от UTF-8  кодировку в нестандартном помощнике, то для этого Вам самим нужно будет определить метод getEncoding() в помощнике.

Использование

Определяйте тег «style» когда Вам удобно:

// adding styles
$this->headStyle()->appendStyle($styles);

Порядок загрузки стилей CSS важен.  Что бы быть уверенным, что стили загрузились именно в том порядке, который необходим используйте для этого методы append, prepend, offsetSet:

// Putting styles in order
 
// place at a particular offset:
$this->headStyle()->offsetSetStyle(100, $customStyles);
 
// place at end:
$this->headStyle()->appendStyle($finalStyles);
 
// place at beginning
$this->headStyle()->prependStyle($firstStyles);

После подготовки всех стилей для вывода в макет (layout) просто вызовете в нем помощника:

<?php echo $this->headStyle() ?>

Захват стилей с помощью помощника HeadStyle

Захват осуществляется в стек:

<?php $this->headStyle()->captureStart() ?>
body {
    background-color: <?php echo $this->bgColor ?>;
}
<?php $this->headStyle()->captureEnd() ?>

В этом примере подразумевается, что:

1) Стили добавлялись в конец стека. Если нужно заменить стек или добавить в начало, то используйте «SET» или «PREPEND» как первый аргумент в captureStart().

2) Если необходимо добавить атрибуты в тег <style>, то просто добавьте их в массив и передайте его как второй аргумент в captureStart().


Автор статьи: DuB