PHPackages                             intellect-web-development/symfony-presentation-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. [Search &amp; Filtering](/categories/search)
4. /
5. intellect-web-development/symfony-presentation-bundle

ActiveSymfony-bundle[Search &amp; Filtering](/categories/search)

intellect-web-development/symfony-presentation-bundle
=====================================================

Package of tools for working with Command and Query(including a search engine with filtering, sorting and pagination)

0.4.1(2y ago)36.9kMITPHPPHP &gt;=8.1

Since Sep 18Pushed 2y ago1 watchersCompare

[ Source](https://github.com/intellect-web-development/symfony-presentation-bundle)[ Packagist](https://packagist.org/packages/intellect-web-development/symfony-presentation-bundle)[ RSS](/packages/intellect-web-development-symfony-presentation-bundle/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (10)Dependencies (16)Versions (31)Used By (0)

Symfony Presentation bundle
===========================

[](#symfony-presentation-bundle)

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

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

Данный пакет предназначен для удобной работы с уровнем представления symfony-приложений.

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

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

- Валидация входных аргументов к методам API
- Генерирование Swagger-документации на основе OpenApi-совместимых DTO
- Сортировка, фильтрация и пагинация по сущностям доктрины
- Получение ресурса/агрегата на основе сущностей доктрины

Пример использования фильтрации:
--------------------------------

[](#пример-использования-фильтрации)

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

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

```
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'

```

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

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

По умолчанию пагинация задается параметром "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'

```

Примеры кода:
-------------

[](#примеры-кода)

### Query:

[](#query)

#### Определение

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

Query - запрос на получение текущего состояния сущности(ресурса/агрегата), без изменения его состояния.

#### Aggregate:

[](#aggregate)

Запрос на получение данных агрегата.

#### Пример Read-action:

[](#пример-read-action)

```
