- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/Service/Router.php
- Класс: Bitrix\Crm\Service\Router
- Вызов: Router::getUrlForTemplate
protected function getUrlForTemplate(string $componentName, array $parameters = [], array $getParameters = []): ?Uri
{
$entityTypeId = $parameters['ENTITY_TYPE_ID'] ?? $parameters['entityTypeId'] ?? null;
$entityTypeId = (int)$entityTypeId;
if (
$entityTypeId === \CCrmOwnerType::SmartDocument
&& \Bitrix\Crm\Settings\Crm::isDocumentSigningEnabled()
&& in_array($componentName, ['bitrix:crm.item.list', 'bitrix:crm.item.kanban'])
)
{
return new Uri(
$componentName === 'bitrix:crm.item.list'
? '/sign/list/'
: '/sign/'
);
}
$event = new Event('crm', 'onGetUrlForTemplateRouter', [
'componentName' => $componentName,
'parameters' => $parameters,
'getParameters' => $getParameters,
'entityTypeId' => $entityTypeId
]);
$event->send();
foreach ($event->getResults() as $result)
{
if ($result->getType() !== \Bitrix\Main\EventResult::ERROR)
{
$return = $result->getParameters();
if ($return instanceof Uri)
{
return $return;
}
}
}
$template = $this->getUrlTemplates()[$componentName] ?? null;
if ($template)
{
if ($this->isSefMode())
{
$path = \CComponentEngine::makePathFromTemplate($template, $parameters);
if ($path)
{
$url = new Uri($this->getFullPath($path, $entityTypeId));
if (!empty($getParameters))
{
$url->addParams($getParameters);
}
return $url;
}
}
else
{
$uri = new Uri($this->getFullPath('type', $entityTypeId));
$params = [
static::GET_COMPONENT_NAME => $componentName,
static::GET_COMPONENT_PARAMETERS => $parameters,
];
$params = array_merge($getParameters, $params);
return $uri->addParams($params);
}
}
return null;
}