Download the PHP package moro/symfony-layout without Composer
On this page you can find all versions of the php package moro/symfony-layout. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Informations about the package symfony-layout
symfony-layout
Version 1.2.0
Описание возможностей и использования
При формировании страницы сайта основной контент, как правило, занимает только определённую её область, а остальную часть составляют независимые или слабо зависимые от него блоки. Для удобного описания размещения блоков следует использовать механизм "раскладок". Тогда описание списка блоков и их порядок записывается в отдельный файл в формате XML.
Формат файла раскладки
В данном примере за формирование HTML кода страницы отвечает стандартный шаблон "@SymfonyLayout/layout.html.twig", который представляет расположение блоков по горизонтальным полосам (stripe), разбитые на колонки (column) с блоками. Простой пример демонстрирует раскладку из одной полосы с одной колонкой, в которой располагается один блок с основным контентом сайта (на то что блок предназначен для основного контента указывает аттрибут id с значением container).
Добавим перед блоком с основным контентом блок главного меню сайта.
У данного блока есть URI контроллера который и будет вызван. При этом к нему будет добавлен GET параметер с именем active и значением, которое будет взято из объекта запроса по ключу heading. В примере это будет символьный код рубрики.
Для более удобного использования можно указать описание блока в отдельном XML файле.
Тогда XML раскладки будет иметь следующий вид.
При наследовании блока можно переопределить любой аргумент или добавить новый. Значение аргумента можно задавать следующими образами:
Кроме этого можно добавить атрибуты default и optional. При помощи первого добавляется значение "по умолчанию", которое будет присвоено если нет подходящего ключа в запросе или конфиге. В случае добавления атрибута optional (в качестве его значения выступает true или false) возможны два варианта: если нет атрибута default, то при отстутствия ключа в источнике аргумент будет проигнорирован, иначе он будет проигнорирован если его значение совпадёт с значением по умолчанию.
Сопоставление раскладки контроллеру
Если в ответе сервера, который получается в результате выполнения действия контроллера, будут открывающие и закрывающие HTML теги layout, то они будут заменены на HTML код раскладки, а контент между ними будет вставлен в раскладке на место блока с id равным container.
Теперь нам надо сопоставить контроллер с именем подходящей раскладки.
Первый способ - использовать аннотации
Одно действие может содержать несколько аннотаций, тогда часть из них должна быть с условием использования. Аннотации будут проверяться последовательно и в заданном порядке.
@Layout("layout_name", active="from('2018/10/11 12:00:00', 'Europe/Moscow') and to('2018/10/12')")
@Layout("layout_name", from="2018/10/11 12:00:00, Europe/Moscow, to="2018/10/12")
@Layout("layout_name")
Для конвертации даты используется класс \DateTime, следовательно можно использовать конструкции вида
Второй способ - использование сервиса
В данном случае вся логика выбора раскладки возлагается на код действия контроллера.
All versions of symfony-layout with dependencies
ext-json Version *
ext-simplexml Version *
sensio/framework-extra-bundle Version ^5.0
symfony/expression-language Version ^4.0
symfony/framework-bundle Version ^4.0
symfony/psr-http-message-bridge Version ^1.0
symfony/contracts Version ^1.0