diff --git a/README.md b/README.md index 6e9d1c12..ba0f7f32 100644 --- a/README.md +++ b/README.md @@ -15,12 +15,12 @@ - [Подход к работе с библиотекой](#подход-к-работе-с-библиотекой) - [Поддерживаемые методы и сервисы](#поддерживаемые-методы-и-сервисы) - [Обработка ошибок](#обработка-ошибок) -- [Фильтры](#Фильтры) +- [Фильтры](#фильтры) - [Работа с Custom Fields сущностей](#работа-с-дополнительными-полями-сущностей) - [Работа с тегами сущностей](#работа-с-тегами-сущностей) - [Особенности работы с источниками](#особенности-работы-с-источниками) - [Константы](#константы) -- [Работа в случае смены субдомена аккаунта](#Работа-в-случае-смены-субдомена-аккаунта) +- [Работа в случае смены субдомена аккаунта](#работа-в-случае-смены-субдомена-аккаунта) - [Одноразовые токены интеграций, расшифровка](#одноразовые-токены-интеграций-расшифровка) - [Работа с валютами](#работа-с-валютами) - [Примеры](#примеры) @@ -539,6 +539,7 @@ $leadsService = $apiClient->leads(); | ```companies``` | ```\AmoCRM\Filters\CompaniesFilter``` | Доступен только на аккаунтах, которые подключены к тестированию функционала фильтрации по API | ✅ | | ```contacts``` | ```\AmoCRM\Filters\ContactsFilter``` | Доступен только на аккаунтах, которые подключены к тестированию функционала фильтрации по API | ✅ | | ```customers``` | ```\AmoCRM\Filters\CustomersFilter``` | Доступен только на аккаунтах, которые подключены к тестированию функционала фильтрации по API | ✅ | +| ```customFields``` | ```\AmoCRM\Filters\CustomFieldsFilter``` | Фильтр для метода получения дополнительных полей `\AmoCRM\EntitiesServices\CustomFields::get` | ❌ | | ```leads``` | ```\AmoCRM\Filters\LeadsFilter``` | Доступен только на аккаунтах, которые подключены к тестированию функционала фильтрации по API | ✅ | | ```events``` | ```\AmoCRM\Filters\EventsFilter``` | Фильтр для списка событий | ❌ | | ```leads```, ```contacts```, ```customers```, ```companies``` | ```\AmoCRM\Filters\LinksFilter``` | Фильтр для получения связей для метода `\AmoCRM\EntitiesServices\HasLinkMethodInterface::getLinks` | ❌ | diff --git a/examples/custom_fields_actions.php b/examples/custom_fields_actions.php index ff6cfc68..4040b291 100644 --- a/examples/custom_fields_actions.php +++ b/examples/custom_fields_actions.php @@ -4,6 +4,7 @@ use AmoCRM\Helpers\EntityTypesInterface; use AmoCRM\Collections\CustomFields\CustomFieldsCollection; use AmoCRM\Exceptions\AmoCRMApiException; +use AmoCRM\Filters\CustomFieldsFilter; use AmoCRM\Models\CustomFields\CheckboxCustomFieldModel; use AmoCRM\Models\CustomFields\CustomFieldModel; use AmoCRM\Models\CustomFields\EnumModel; @@ -47,6 +48,16 @@ function (AccessTokenInterface $accessToken, string $baseDomain) { die; } +//Получим поля по типу +try { + $filter = (new CustomFieldsFilter()) + ->setTypes([CustomFieldModel::TYPE_TEXT, CustomFieldModel::TYPE_URL]); // или ['text', 'url'] + $result = $customFieldsService->get($filter); +} catch (AmoCRMApiException $e) { + printError($e); + die; +} + //Создадим модель поля и освежим его $customFieldModel = new CustomFieldModel(); $customFieldModel->setId(269303); diff --git a/src/AmoCRM/Filters/CustomFieldsFilter.php b/src/AmoCRM/Filters/CustomFieldsFilter.php new file mode 100755 index 00000000..d7454763 --- /dev/null +++ b/src/AmoCRM/Filters/CustomFieldsFilter.php @@ -0,0 +1,57 @@ +types; + } + + /** + * Filters custom_fields by types. + * + * @param string[]|null $types Type are defined in `CustomFieldModel`. + */ + public function setTypes(?array $types): self + { + $this->types = $this->parseArrayOrStringFilter($types); + + return $this; + } + + /** + * @return array + */ + public function buildFilter(): array + { + $filter = []; + + if (!empty($this->types)) { + $filter['filter']['type'] = $this->types; + } + + $filter = $this->buildPagesFilter($filter); + + return $filter; + } +}