• Модуль: catalog
  • Путь к файлу: ~/bitrix/modules/catalog/lib/component/baseform.php
  • Класс: BitrixCatalogComponentBaseForm
  • Вызов: BaseForm::getElementPropertyEditHtml
protected function getElementPropertyEditHtml(string $name, array $propertyFields, $values, bool $valueFromForm = false, bool $isCopying = false): string
{
	$name = htmlspecialcharsbx($name);

	$index = 0;
	$show = true;

	$propertyFields['LINK_IBLOCK_ID'] = (int)$propertyFields['LINK_IBLOCK_ID'];
	$multipleCount = (int)($propertyFields['MULTIPLE_CNT']);
	if ($multipleCount <= 0 || $multipleCount > 30)
	{
		$multipleCount = 5;
	}

	$cnt = ($propertyFields['MULTIPLE'] === 'Y' ? $multipleCount : 1);

	if (!is_array($values))
	{
		$values = [$values];
	}

	$fixIBlock = $propertyFields['LINK_IBLOCK_ID'] > 0;
	$windowTableId = 'iblockprop-' . PropertyTable::TYPE_ELEMENT . '-' . $propertyFields['ID'] . '-' . $propertyFields['LINK_IBLOCK_ID'];

	$searchParams = [
		'IBLOCK_ID' => (string)$propertyFields['LINK_IBLOCK_ID'],
		'n' => $name,
		'tableId' => $windowTableId,
	];
	if ($fixIBlock)
	{
		$searchParams['iblockfix'] = 'y';
	}

	$result = '';
	$key = '';
	foreach ($values as $key => $val)
	{
		$show = false;
		if ($isCopying)
		{
			$key = 'n' . $index;
			$index++;
		}

		if (is_array($val) && array_key_exists('VALUE', $val))
		{
			$val = $val['VALUE'];
		}

		$element = ElementTable::getRow([
			'select' => [
				'NAME',
			],
			'filter' => [
				'=ID' => $val
			],
		]);
		$elementName = $element === null ? '' : $element['NAME'];

		$currentSearchParams = $searchParams;
		$currentSearchParams['k'] = $key;
		$searchUrl = $this->urlBuilder->getElementSearchUrl($currentSearchParams);

		$result .= '';
		unset($searchUrl, $currentSearchParams);

		if ($propertyFields['MULTIPLE'] !== 'Y')
		{
			$valueFromForm = true;
			break;
		}
	}

	if (!$valueFromForm || $show)
	{
		for ($i = 0; $i < $cnt; $i++)
		{
			$val = '';
			$key = 'n' . $index;
			$index++;

			$currentSearchParams = $searchParams;
			$currentSearchParams['k'] = $key;
			$searchUrl = $this->urlBuilder->getElementSearchUrl($currentSearchParams);

			$result .= '';
		}
	}

	if ($propertyFields['MULTIPLE'] === 'Y')
	{
		$currentSearchParams = $searchParams;
		$currentSearchParams['k'] = $key;
		$currentSearchParams['m'] = 'y';
		$searchUrl = $this->urlBuilder->getElementSearchUrl($currentSearchParams);
		$result .= '';
	}

	$searchUrl = $this->urlBuilder->getElementSearchUrl($searchParams, "&k=n'+MV_" . md5($name) . "+'");

	$result .= '
' . '' . '' . ' ' . htmlspecialcharsbx($elementName) . '' . '
' . '' . '' . ' ' . '
' . '' . '' . '
'; $result .= '"; return $result; }