• PHP
  • JavaScript

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

Добрый день! До полного счастья осталось «добить» два вопроса.

За основу взята форма «feedback-two-forms-with-captcha».

На одной странице имеются несколько кнопок для вызова формы в модальном окне.

Форма одна. Чтобы не плодить кучу форм, названия (заголовки) формы организованы с помощью атрибута data-title:
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#feedbackFormModal" data-title="Название заголовка">
Скрипт:
$('[data-toggle="modal"]').click(function (e) {
  e.preventDefault();
  var idSelector = $(this).attr('data-target');
  var title = $(this).attr('data-title');
  $(idSelector).find('.modal-title').text(title);
});
Вопросы:

1) Подскажите пожалуйста, как данные из атрибута data-title передать на почту для идентификации формы. Что нужно дописать в main.js и process.php?

2) При открытии формы в модальном окне справа появляется отступ и сайт смещается. Закрывая окно сайт немного сдвигается обратно, но отступ все равно остается. Где и как копать, чтобы найти причину? Форма находится в корне, в папке feedback. Стили bootstrap.css из этой папки не подключены, так как плывет весь сайт.

Ответы: 4

Аноним
Аноним

Всем спасибо, вопрос закрыт!

Рабочий вариант.

Чтобы не плодить на одной странице кучу форм, названия (заголовки) формы организованы с помощью атрибута data-argument.

Перечень действий:

1) Добавляем атрибут в кнопку:

<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#feedbackFormModal" data-argument="Название заголовка">

2) Вставляем на страницу скрипт:

$('[data-toggle="modal"]').click(function (e) {
  e.preventDefault();
  var idSelector = $(this).attr('data-target');
  var title = $(this).attr('data-argument');
  $(idSelector).find('.modal-title').text(title);
  $('#feedbackForm').prepend('<input type="hidden" name="argument" value="' + title + '">');
});

3) Принимаем в process.php:

if (isset($_POST['argument'])) {
  $argument = filter_var($_POST['argument'], FILTER_SANITIZE_STRING);
}

Выполняем замену:

$bodyMail = str_replace('%email.argument%', isset($argument) ? $argument : '-', $bodyMail);

4) Передаем на почту через email.tpl:

Заявка с формы: <b>%email.argument%</b>
Аноним
Аноним

Сюда (<h3 class="modal-title" id="myModalLabel">Форма связи</h3>) подставляется заголовок формы. Его нам и нужно передать.

Если правильно понимаю, то:

1) Создаем скрытое поле в форме, которое содержит название атрибута data-title="Задача":

<input type="hidden"  name="modal-title" id="myModalLabel" value="">

2) Принимаем в process.php:

if (isset($_POST['modal-title']))

3) Передаем на почту через email.tpl:

<p>Название формы: [[+modal-title]]</p>

Я полный чайник, где ошибки понимаю плохо. Подправьте пожалуйста.

Аноним
Аноним

Всем доброго дня! Если с этим трудности, может этот вопрос можно как-то организовать по другому?

Аноним
Аноним

Счастье совсем близко)

2-й вопрос решился:
body {
  padding: 0 !important;
}
Остался ещё один вопрос.

Помогите люди добрые)