PHPackages                             moro/symfony-layout - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Templating &amp; Views](/categories/templating)
4. /
5. moro/symfony-layout

ActiveSymfony-bundle[Templating &amp; Views](/categories/templating)

moro/symfony-layout
===================

1.3.0(6y ago)013MITPHPPHP ^7.1

Since Sep 16Pushed 6y ago1 watchersCompare

[ Source](https://github.com/Moro4125/symfony-layout)[ Packagist](https://packagist.org/packages/moro/symfony-layout)[ RSS](/packages/moro-symfony-layout/feed)WikiDiscussions master Synced 3d ago

READMEChangelog (1)Dependencies (10)Versions (7)Used By (0)

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*.

Теперь нам надо сопоставить контроллер с именем подходящей раскладки.

#### Первый способ - использовать аннотации

[](#первый-способ---использовать-аннотации)

```
