- Модуль: documentgenerator
- Путь к файлу: ~/bitrix/modules/documentgenerator/lib/dataprovidermanager.php
- Класс: BitrixDocumentGeneratorDataProviderManager
- Вызов: DataProviderManager::createDataProvider
public function createDataProvider(
array $fieldDescription,
$value = null,
DataProvider $parentDataProvider = null,
$placeholder = null
): ?DataProvider
{
if(!$value && isset($fieldDescription['VALUE']))
{
$value = $this->getValue($fieldDescription['VALUE'], $parentDataProvider, $placeholder);
}
if(!$value)
{
return null;
}
if($value instanceof Value)
{
$value = $value->getValue();
}
if(isset($fieldDescription['PROVIDER']))
{
$options = $fieldDescription['OPTIONS'] ?? [];
if(!isset($options['VALUES']))
{
$options['VALUES'] = [];
}
// rewrite values of inner provider from parent options
if($parentDataProvider)
{
$parentProviderOptions = $parentDataProvider->getOptions();
if(isset($parentProviderOptions['VALUES']) && is_array($parentProviderOptions['VALUES']) && $placeholder !== null)
{
$options['VALUES'] = array_merge($options['VALUES'], $this->reformOptionValues($parentProviderOptions['VALUES'], $placeholder));
}
}
return $this->getDataProvider($fieldDescription['PROVIDER'], $value, $options, $parentDataProvider);
}
return null;
}