• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/controller/form.php
  • Класс: Bitrix\Crm\Controller\Form
  • Вызов: Form::getEmbedAction
public function getEmbedAction($formId)
{
	if (!$this->getFormAccess())
	{
		$this->addError(new Main\Error('Access denied.', self::ERROR_CODE_FORM_READ_ACCESS_DENIED));
		return ['error' => ['status' => 'access denied', 'code' => self::ERROR_CODE_FORM_READ_ACCESS_DENIED]];
	}

	if ($this->shouldVerifyPhone() && !$this->isPhoneVerified($formId))
	{
		$this->addError(new Main\Error('Phone doesn\'t verified', self::ERROR_CODE_PHONE_NOT_VERIFIED, ['id' => $formId]));
		return [];
	}

	$form = new WebForm\Form($formId);
	$formData = $form->get();

	$views = $formData['FORM_SETTINGS']['VIEWS'];
	$dict = $this->getDictForEmbed();
	$viewOptions = $this->buildViewOptions(WebForm\Options::getViewOptions(), $dict);
	$scripts = WebForm\Script::getListContext($formData, []); // embed codes
	$pubLink = WebForm\Script::getUrlContext($formData); // public form link

	$previewLink = strtr(WebForm\Script::getPublicFormPath(), [
		'#id#' => $formData['ID'],
		'#form_id#' => $formData['ID'],
		'#form_code#' => $formData['CODE'],
		'#form_sec#' => $formData['SECURITY_CODE'],
	]);
	$previewLink = WebForm\Script::getDomain() . $previewLink . '?view=preview&preview=#preview#';

	return [
		'dict' => [
			'viewOptions' => $dict,
		],
		'embed' => [
			'scripts' => array_change_key_case($scripts, CASE_LOWER),
			'pubLink' => $pubLink,
			'previewLink' => $previewLink,
			'viewValues' => array_change_key_case($views, CASE_LOWER),
			'viewOptions' => array_change_key_case($viewOptions, CASE_LOWER),
			'helpCenterUrl' => self::getHelpCenterUrl(self::EMBED_HELP_CENTER_ID),
			'helpCenterId' => self::EMBED_HELP_CENTER_ID,
		],
	];
}