"Уже сегодня делай то, о чем другие будут думать завтра!"

Custom Hook

Сайдбар

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

Обоснуем это вне общей формы контакта, как указано в примере Contact Page.

 

Тег сниппета

Единственное, что нужно добавить к базовому запросу – это новый хук: мы добавили хук с именем customhook

 

[[!FormIt?

   &hooks=`spam,customhook,email,redirect`

   &emailTpl=`MyEmailChunk`

   &emailTo=`user@example.com`

   &redirectTo=`123`

   &validate=`name:required,

      email:email:required,

      subject:required,

      text:required:stripTags,

]]

 

 


Сниппет customhook

Название хука соответствует имени сниппета. Таким образом, мы создаем сниппет с именем customhook. Это пригодится при написании настраиваемого хука, чтобы сначала провести некоторые тесты и убедиться в его выполнении. Поскольку предполагается, что настраиваемый хук должен возвращать значение true или false, не так просто распечатать информацию об отладке. Вместо этого мы можем написать что-нибудь в логе MODx, используя функцию ->log().

Помните, что Вам нужно возвращать true, если Вы хотите принимать во внимание валидацию формы! Вот наш пример кода для нашего нового сниппета customhook:

 

Тестирование

Первое, что Вы хотите сделать при написании настраиваемого хука – это протестировать его, чтобы убедиться в успешном выполнении.


<?php
$modx->log(xPDO::LOG_LEVEL_ERROR, 'Testing my custom hook..');
return true;  //<-- если Вы опустите это или укажите return false, форма не будет проверяться

 

Сохраните сниппет, и попробуйте подтвердить форму. Проверьте системный лог MODx (Reports --> Error Log) чтобы убедиться, что ваш сниппет выполнен. Вы должны увидеть что-то вроде этого в логах:

[2011-10-24 11:23:20] (ERROR @ /index.php) Testing my custom hook.

 

Установка значений

У всех настраиваемых хуков есть общая черта – необходимо вычислить новые значения полей, это эмулирует наличие скрытых полей в форме. Например, Ваш сниппет customhook может установить метку даты, когда форма была отправлена.


<?php
$datestamp = date('Y-m-d H:i:s');
$hook->setValue('datestamp_submitted', $datestamp);
return true;


Когда Вы это сохранили, можете обновить чанк MyEmailChunk, чтобы добавить новую информацию, например,


MyEmailChunk:

 [[+name]] ([[+email]]) 
<br/>
 
Date Submitted:
[[+datestamp_submitted]]
<br/>

 


Чтение значений

Следующее общее правило для настраиваемых хуков – это считать подтвержденную информацию и предпринять какие-то действия по отношению к ней, например, внести данные в базу данных. Значения могут быть прочитаны по отдельности с помощью хука $hook->getValue(), например:


$email = $hook->getValue('email');

Или же все значения могут быть считаны сразу с помощью хука $hook->getValues():


$formFields = $hook->getValues();
$email = $formFields['email'];




Контактная информация

По всем интересующим вас вопросам связывайтесь при помощи контактной информации приведенной на этой странице!

telegram: @Accusser
skype: metsof
email: accusser@gmail.com

В социальных сетях...

Форма обратной связи

Sign In