Добавление информации в письма с формы обратной связи — различия между версиями

Материал из Umicms
Перейти к:навигация, поиск
(Решение)
 
Строка 15: Строка 15:
 
<source lang="php">
 
<source lang="php">
 
<?php
 
<?php
new umiEventListener("webforms_post", "webforms", "onCreateMessage");
+
new umiEventListener("webforms_create_message", "webforms", "onCreateMessage");
 
?>
 
?>
 
</source>
 
</source>

Текущая версия на 10:57, 24 мая 2019

Актуально для версии 20

Задача

Передать из формы обратной связи какие-либо данные, которые нужны нам, но для пользователя не должны быть видны.

Решение

Для примера мы рассмотрим добавление информации о домене, с которого была отправлена форма.

  1. Создаём в модуле "Шаблоны данных" в типе данных "Форма обратной связи" новую группу полей, назовём её "Дополнительная информация".
  2. В созданной группе полей добавляем поле под названием "Информация", с идентификатором info и типом "Простой текст". Поле не должно быть видимым, поэтому галочку на "Видимое" мы не ставим:
  3. Info.png

  4. Теперь нам нужно создать обработчик события создания сообщения webforms_create_message. Для этого создадим в папке ~/classes/components/webforms файл custom_events.php и напишем там следующий код:
    <?php
    	new umiEventListener("webforms_create_message", "webforms", "onCreateMessage");
    ?>
    
  5. После того, как мы назначили обработчик, нам надо написать его код. Код нашего обработчика будет следующим:
    public function onCreateMessage(iUmiEventPoint $oEventPoint)
    {	
    	if ($oEventPoint->getMode() != "after") {
    	   return;
    	}
    						
    			
    	$id = $oEventPoint->getParam('messageId');
    	$sel = new selector('objects');
    	$sel->where('id')->equals($id);
    	$res = $sel->result();
    					
    	$message = $res[0];
    	$message->setValue('info', $_SERVER['SERVER_NAME']);
    	$message->commit();
    }
    

    Этот код необходимо разместить в файле ~/classes/components/webforms/customMacros.php В предпоследней строке кода мы присваиваем полю info какое-либо значение. В нашем примере это текущий домен, с которого отправлена форма, но Вы можете добавлять туда любое нужное Вам значение.

  6. Все необходимые шаги выполнены, и теперь осталось только добавить вывод нашего поля info в письмах, которые приходят с формы. Для этого мы заходим в модуль "Конструктор форм", вкладка "Шаблоны писем" и выбираем нужный нам шаблон. В шаблоне нам нужно только прописать макрос для вывода поля - %info%.
  7. Template.png


На этом все необходимые действия завершены и теперь при отправке формы, помимо данных, введённых пользователем, мы будем получать какую-то дополнительную информацию, нужную нам.