Skip to content

Latest commit

 

History

History
82 lines (62 loc) · 3.89 KB

Configurable.md

File metadata and controls

82 lines (62 loc) · 3.89 KB

Конфигурация

На любом этапе обмена можно запросить у пользователя настройку, которая будет заполнена на этапе создания обмена и доступна на момент запуска.

Настройки в iikoWeb рисуются для пользователя в Angular приложении, которому backEnd часть iikoWeb посредством REST API выдает в формате JSON.

Сохранением и заполнением настроек занимается iikoWeb. Все настройки заранее берутся из базы данных и записываются в класс, чтобы их можно было получить. Таким образом избегается необходимость обращения к хранилищу настроек.

Типы настроек

Определение настроек

Для того, чтобы класс смог выдать настройки пользователю, нужно использовать интерфейс ConfigurableExtensionInterface и trait ConfigurableExtensionTrait.

Т.к. внутри trait ConfigurableExtensionTrait есть метод jsonSerialize, который и позволяет отдавать настройки через JSON, он будет конфликтовать с вашим внутренним jsonSerialize. Чтобы решить эту проблему необходимо использовать trait

use ConfigurableExtensionTrait
{
	ConfigurableExtensionTrait::jsonSerialize as public configJsonSerialize;
}

и добавить в ваш метод jsonSerialize. Например:

public function jsonSerialize()
{
	return ['some_key' => 'some_value'] + $this->configJsonSerialize();
}

Далее необходимо определить (при подключенном trait ConfigurableExtensionTrait - переопределить) метод exposeConfiguration.

# Пример определения настроек

const CONFIG_SOMEVALUE = 'SOMEVALUE';

public function exposeConfiguration(): array
{
	return 
	[
	    new ConfigItemMultiSelect(self::CONFIG_SOMEVALUE, "ServiceProduct", null, false)];
	];
}

где

  • ServiceProduct - это код OptionSet
  • null - значение по умолчанию
  • false - признак того, что поле обязательно для заполнения

Получение настройки

Получить настройку можно вызовом метода getConfigValue

$this->getConfigValue(self::CONFIG_ITEM_VENDOR_ID)