В данной заметке из цикла «Продолжаем знакомиться с битриксом» рассмотрим сервис веб-форм.
Стандартная функция этих форм состоит в отправке данных в базу с дальнейшим просмотром в админке. В заметке рассморен вызов формы из инфоблока всплываеющим окном и ее модификация.
В следующей документации можно получить довольно полную информацию о создании и использовании веб-форм в битриксе:
Документация по веб-формам битрикс для разработчиков
Документация по веб-формам битрикс для пользователей
Пользуясь документацией создадим веб-форму в админке битрикса, также создадим тестовый вопрос (сразу посмотрим id его поля в форме <?=$FORM->ShowInput('SIMPLE_QUESTION_123')?> это можно сделать во вкладке «Шаблон формы», выбрав «Использовать свой шаблон формы», закинув виджет нашего вопроса и переключившись в html-режим редактора).
После создания формы, необходимо вывести форму на фронте.
Будем выводить форму через всплывающее окно (<a href=»/test_form/index.php?ID=<?=$arElement["ID"];?>» onclick=»return hs.htmlExpand(this, { objectType: 'iframe' } )»>Тестовая форма</a>) с подключемым компонентом в index.php-файле:
<? require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php"); $APPLICATION->SetTitle("Тестовая форма"); ?> <? $APPLICATION->IncludeComponent("bitrix:form.result.new", "template", Array( "SEF_MODE" => "Y", // Включить поддержку ЧПУ "WEB_FORM_ID" => "3", // ID веб-формы "LIST_URL" => "", // Страница со списком результатов "EDIT_URL" => "", // Страница редактирования результата "SUCCESS_URL" => "", // Страница с сообщением об успешной отправке "CHAIN_ITEM_TEXT" => "", // Название дополнительного пункта в навигационной цепочке "CHAIN_ITEM_LINK" => "", // Ссылка на дополнительном пункте в навигационной цепочке "IGNORE_CUSTOM_TEMPLATE" => "N", // Игнорировать свой шаблон "USE_EXTENDED_ERRORS" => "N", // Использовать расширенный вывод сообщений об ошибках "CACHE_TYPE" => "A", // Тип кеширования "CACHE_TIME" => "3600", // Время кеширования (сек.) "SEF_FOLDER" => "/test_form/", // Каталог ЧПУ (относительно корня сайта) "VARIABLE_ALIASES" => "" ), false ); ?> <? require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php"); ?> |
Используя компонент form.result.new мы формируем «страницу» заполнения формы.
Как видно по парметрам вызова метода IncludeComponent мы пользуемся нестандартным шаблоном template.
Для справки стандартный шаблон этого компонента выглядит следующим образом:
Станданртный шаблон компонента form.result.new
В нашем пользовательском шаблоне сделаны следующее изменение: в первое поле автоматически при создании формы записывется нужное значение. Делается это следующим образом:
<? foreach ($arResult["QUESTIONS"] as $FIELD_SID => $arQuestion) { if ($FIELD_SID == "SIMPLE_QUESTION_123") { // проверяем символьный id поля формы $name = ''; if (CModule::IncludeModule("iblock") && $_GET["ID"]) { // подключаем модуль инфоблок с которого вызываем форму $res = CIBlockElement::GetByID($_GET["ID"]); // получаем объект CIBlockResult if ($ar_Res = $res->GetNext()) $name = $ar_Res["NAME"]; // методом GetNext() получаем значение поля NAME инфоблока } ?> <tr> <td> <?if (is_array($arResult["FORM_ERRORS"]) && array_key_exists($FIELD_SID, $arResult['FORM_ERRORS'])):?> <span class="error-fld" title="<?=$arResult["FORM_ERRORS"][$FIELD_SID]?>"></span> <?endif;?> <?=$arQuestion["CAPTION"]?><?if ($arQuestion["REQUIRED"] == "Y"):?><?=$arResult["REQUIRED_SIGN"];?><?endif;?> <?=$arQuestion["IS_INPUT_CAPTION_IMAGE"] == "Y" ? "<br />".$arQuestion["IMAGE"]["HTML_CODE"] : ""?> </td> <td><input type="text" class="inputtext" name="form_text_<?=$arQuestion["STRUCTURE"][0]["ID"];?>" value="<?=$name;?>" size="30" readonly /></td> <!-- подставляем полученное выше значение NAME инфоблока в нужное поле --> </tr> |
Соответственно для использования методов класса CModule надо подключить файл с его описанием где-нибудь в начале нашего файла шаблона: <? require_once($_SERVER["DOCUMENT_ROOT"].»/bitrix/modules/catalog/mysql/catalog.php»); ?>
Соответственно, чтобы начал подгружаться созданный нами шаблон необходимо положить его в следующую папку: \bitrix\templates\.default\components\bitrix\form.result.new\template\template.php
Если у вас есть дополнения или замечания — приглашаю в комменты.
Очень интересный сервис.Хочу перевести свой сайт на битрикс
Добрый день. Есть сайт на Битриксе, на котором есть форма для отправки сообщений. Насколько я понимаю, это и есть код формы
IncludeComponent("bitrix:form.result.new", "", $arParams, $component); ?>
Полагаю, для того, чтобы создать страницу благодарности, на которую будет перенаправляться пользователь, нужно куда-то вписать код
"SUCCESS_URL" => "",
Но куда и как, понять так и не смог. Всё перепробовал. Подскажите пожалуйста.
Заранее спасибо.