• Модуль: landing
  • Путь к файлу: ~/bitrix/modules/landing/lib/subtype/search.php
  • Класс: BitrixLandingSubtypeSearch
  • Вызов: Search::prepareForm
static function prepareForm(array $manifest, array $params = [])
{
	if (BitrixLandingTransferAppConfiguration::inProcess())
	{
		return $manifest;
	}

	// necessary params
	if (!isset($params['resultPage']))
	{
		return $manifest;
	}

	// force set action attribute for form after block add
	$manifest['callbacks'] = array(
		'afterAdd' => function (Block &$block) use($params)
		{
			$manifest = $block->getManifest();
			$landingId = Search::getSearchResultPage(
				$block->getSiteId(),
				$params['resultPage']
			);

			if (!$landingId)
			{
				return;
			}

			// try to find url attrs and set default value
			$attributeSelector = '';
			foreach ($manifest['attrs'] as $selector => $item)
			{
				if (
					$item['type'] == 'url' &&
					$item['attribute'] == 'action'
				)
				{
					$attributeSelector = $selector;
					break;
				}
			}

			$block->setAttributes([
				$attributeSelector => [
					'action' => '#landing' . $landingId
				]
			]);
			$block->save();
		},
	);

	return $manifest;
}