Задать вопрос
@newked

Как в битриксе заставить на одной странице работать две одинаковые формы?

Привет всем. Ребята, выручайте. Сразу скажу, в битриксе новичок, а потому и нужна ваша помощь.
Появилась задачка. Делаю информационную страницу на которой есть две одинаковые формы, которые добавляют информацию в один информационный блок. По сути форма состоит из поля email и кнопки отправить.
Что я сделал?!
1. Создал информационный блок
2. Сделал шаблон (bitrix:iblock.element.add.form) вот с таким кодом:
<form  id="forma_econ" name="iblock_add" action="<?=POST_FORM_ACTION_URI?>" method="post" enctype="multipart/form-data">
		<?=bitrix_sessid_post()?>
		<div class="forma_econ">
			<div class="forma_econ_mail"><input autocomplete="off" placeholder="<?=GetMessage("EMAIL_TEXT_PL")?>" name="PROPERTY[NAME][0]" type="text" value=""></div>
			<div class="forma_econ_submit"><input type="submit" name="iblock_submit" value="<?=GetMessage("IBLOCK_FORM_SUBMIT")?>" /></div>
		</div>
		<input type="hidden" name="FORM_ID" value="<?=$arParams["FORM_ID"]?>">
	</form>

3. Вроде бы все просто, но я вставил эту форму (форма с технологией AJAX) в двух местах на одной странице. И при попытке отправить форму которая находится ниже , происходит какой-то глюк, AJAX игнорируется, данные не отправляются.
Я не знаю в где копать, хелп парни. Надеюсь поможете.
  • Вопрос задан
  • 1433 просмотра
Подписаться 1 Простой 12 комментариев
Пригласить эксперта
Ответы на вопрос 1
kirk_novozhilov
@kirk_novozhilov
Lead Bitrix Developer, Bitrix mentor
Варианта три:

1. Рестарт буфера.

Откопируйте шаблон для второго компонента. Перед формой положите код:
<? if (count($arResult["ERRORS"]) > 0 || !empty($arResult["MESSAGE"])) {
	$APPLICATION->RestartBuffer();
// здесь обработка MESSAGE или ERRORS
	die();
}
?>


id="forma_econ"
заменить на
id="forma_econ<?=$arParams["FORM_ID"]?>"

FORM_ID - должен быть для каждой формы на странице уникальный

2. Откопировать компонент в своё пространство имён.

Добавить в компонент ещё один кастомный параметр (как вижу, вы добавили FORM_ID) и внутри component.php уже делать сабмит только при корректном входящем параметре.

3. Написать свой компонент.
Написать компонент на d7 с контроллерами.
https://dev.1c-bitrix.ru/learning/course/index.php...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы