PHPackages                             lshamanl/symfony-ui-bundle - 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. [Framework](/categories/framework)
4. /
5. lshamanl/symfony-ui-bundle

Abandoned → [intellect-web-development/symfony-presentation-bundle](/?search=intellect-web-development%2Fsymfony-presentation-bundle)Symfony-bundle[Framework](/categories/framework)

lshamanl/symfony-ui-bundle
==========================

Symfony API-Adapter, UI-Bundle, Filters

1.1.3(4y ago)079BSD-3-ClausePHPPHP &gt;=8.0

Since Sep 10Pushed 4y ago1 watchersCompare

[ Source](https://github.com/lShamanl/symfony-ui-bundle)[ Packagist](https://packagist.org/packages/lshamanl/symfony-ui-bundle)[ RSS](/packages/lshamanl-symfony-ui-bundle/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (8)Dependencies (19)Versions (12)Used By (0)

Symfony Api Adapter
===================

[](#symfony-api-adapter)

Описание:
---------

[](#описание)

Данный пакет является Симфони-бандлом. Он реализует паттерн CQRS, давая возможность работать с Query, и, Command запросами.

Проблема, которую решает данный пакет: Снимает с разработчика необходимость писать повторяющийся код в UI-точках входа в приложение(Controllers, CommandBus), далее Controller.

Для работы с Command пакет предоставляет определенный интерфейс для передачи "контекстов" из слоя "Controller" на слой "Application(UseCase)".

В случае с Query работа пакета полностью автоматизирована, для корректной фильтрации и выборки по идентификатору необходимо только указать некоторую конфигурацию. Никаких больше ручных SQL-запросов и ручной возни с QueryBuilder ;)

Внешнее использование:
----------------------

[](#внешнее-использование)

### Пример строки запроса:

[](#пример-строки-запроса)

```
GET /clients?filter[emails.email][like]=26d@&sort=-createdAt,updatedAt&page[number]=1&page[size]=20&filter[userId][eq]=ccf92b7a-8e05-4f4b-9f0a-e4360dbacb23&filter[name.translations.last][eq]=Tesla&lang=ru
```

### Контракты:

[](#контракты)

#### Сортировка:

[](#сортировка)

##### Описание:

[](#описание-1)

Сортировка задается параметром "sort". Направление сортировки задается опциональным знаком '-' перед названием свойства, по которому предполагается сортировка. Если знак '-' присутствует, то сортировка по этому полю ведется с модификатором DESC, иначе - ASC. Допускается сортировка по нескольким полям агрегата. Для этого необходимо написать несколько полей, разделив их символом ','. Чем раньше было указано поле, тем больший "вес" оно имеет при выборке.

##### Пример:

[](#пример)

```
sort='-createdAt,updatedAt'

```

#### Пагинация:

[](#пагинация)

#### Сортировка:

[](#сортировка-1)

Пагинация задается параметром "page". Параметр имеет два поля - number и size.

- "number" указывает на номер страницы, которую запрашивает клиент. По умолчанию: 1
- "size" указывает размер страницы(сколько агрегатов должно быть отображено). По умолчанию: 20

##### Описание:

[](#описание-2)

```
page[number]='1'
page[size]='20'

```

#### Фильтрация:

[](#фильтрация)

##### Описание:

[](#описание-3)

Операторы поиска:

НазваниеДопустимые значенияПримерОписаниеNOT\_IN'not-in'filter\[status\]\[not-in\]\[\]='blocked'Свойство не содержит ни одно из указанных значенийIN'in'filter\[status\]\[in\]\[\]='active'Свойство содержит одно из указанных значенийRANGE'range'filter\[rating\]\[range\]='17,42'Свойство находится в выбранном указанном диапазонеIS\_NULL'is-null'filter\[gender\]\[is-null\]Свойство равно nullNOT\_NULL'not-null'filter\[name\]\[not-null\]Свойство не равно nullLESS\_THAN'less-than', '&lt;', 'lt'filter\[rating\]\[&lt;\]='94'Свойство меньше указанного значенияGREATER\_THAN'greater-than', '&gt;', 'gt'filter\[rating\]\[&gt;\]='42'Свойство больше указанного значенияLESS\_OR\_EQUALS'less-or-equals', '&lt;=', 'lte'filter\[rating\]\[&lt;=\]='15'Свойство меньше или равно указанному значениюGREATER\_OR\_EQUALS'greater-or-equals', '&gt;=', 'gte'filter\[rating\]\[&gt;=\]='97'Свойство больше или равно указанному значениюLIKE'like'filter\[email\]\[like\]='26d@'Свойство содержит часть указанного значенияNOT\_LIKE'not-like'filter\[email\]\[not-like\]='27d@'Свойство не содержит часть указанного значенияEQUALS'equals', '=', 'eq'filter\[userId\]\[eq\]='ccf92b7a-8e05-4f4b-9f0a-e4360dbacb23'Свойство эквивалентно указанному значениюNOT\_EQUALS'not-equals', '!=', '&lt;&gt;', 'neq'filter\[userId\]\[neq\]='aaf92b7a-8e05-4f4b-9f0a-e4360dbacb23'Свойство не эквивалентно указанному значению##### Пример:

[](#пример-1)

```
filter[userId][eq]='ccf92b7a-8e05-4f4b-9f0a-e4360dbacb23'
filter[name.translations.last][eq]='Tesla'
filter[emails.email][like]='26d@'
filter[userId][eq]='ccf92b7a-8e05-4f4b-9f0a-e4360dbacb23'
filter[name.translations.last][eq]='Tesla'
filter[emails.email][in][]='0791d11b6a952a3804e7cb8a220d0a9b@mail.ru'
filter[emails.email][in][]='0891d11b6a952a3804e7cb8a220d0a9b@mail.ru'

```

Определения:
------------

[](#определения)

### InputContract

[](#inputcontract)

#### Описание:

[](#описание-4)

InputContract - это DTO-описание входящих параметров точки входа в приложение. Все поля DTO должны являться скалярными типами. Может содержать в себе "Validation Asserts". Может использоваться для формирования авто-документации.

#### Назначение:

[](#назначение)

Сериализация и валидация данных из Request, формирование авто-документации.

#### Пример:

[](#пример-2)

```
