Создание документа Modx при заполнении формы Formit
Для автоматического создания документа в админке modx по результатам заполнения формы следует применять связку Formit(AjaxForm) + хук.
Хук — это сниппет, выполняемый после сабмита формы (отправки формы).
Приведу в пример хук, который добавляет отзывы о компании в виде отдельных ресурсов.
Назовем хук addReviewDocument
В вызов AjaxForm добавляем название сниппета (хука). Определяем очередность вызова.
В данном примере, документ будет создаваться после проверки на СПАМ и до отправки на email.
Так, даже в случае с проблемами работоспособности отправки почты, документ будет создан.
Документ создаем снятым с публикации. После модерации менеджер включает его.
Хук — это сниппет, выполняемый после сабмита формы (отправки формы).
Приведу в пример хук, который добавляет отзывы о компании в виде отдельных ресурсов.
Назовем хук addReviewDocument
<?php
$name = $hook->getValue('name');
$stars = $hook->getValue('stars');
$comment = $hook->getValue('comment');
$name = addslashes($_POST['name']);
$message = addslashes($_POST['message']);
$parent = 2958;
$docs = $modx->getCollection('modResource', [
'parent' => $parent
]);
$menuindex = count($docs) + 1;
// Создаем новый ресурс
$resource = $modx->newObject('modResource');
$resource->set('template', 23);
$resource->set('searchable', 0);
$resource->set('isfolder', 0);
$resource->set('richtext', 0);
$resource->set('published', 0);
$resource->set('createdon', time());
$resource->set('pagetitle', time() . ' ' . $name);
$resource->set('alias', time());
$resource->setContent($comment);
$resource->set('parent', $parent);
$resource->set('menuindex', $menuindex);
$resource->save();
$resource->setTVValue('reviewName', $name);
$resource->setTVValue('reviewStars', $stars);
$resource->save();
return true;
В вызов AjaxForm добавляем название сниппета (хука). Определяем очередность вызова.
В данном примере, документ будет создаваться после проверки на СПАМ и до отправки на email.
Так, даже в случае с проблемами работоспособности отправки почты, документ будет создан.
{'!AjaxForm' | snippet : [
'snippet' => 'FormIt',
'formName' => 'Отзыв о компании',
'validationErrorMessage' => 'Форма содержит ошибки',
'formSelector' => 'af_review',
'emailTo' => $_modx->config.emailto,
'emailBCC' => $_modx->config.emailtobcc,
'emailSubject' => $_modx->config.http_host ~ ' - Отзыв о компании',
'emailFrom' => $_modx->config.emailsender,
'emailFromName' => $_modx->config.site_name,
'form' => 'review.form',
'emailTpl' => 'review.emailTpl',
'hooks' => 'stopspam,addReviewDocument,email,FormItSaveForm',
'customValidators'=>'isXcode',
'validate' => 'name:required,stars:required,comment:required,xcode:isXcode',
]}
Документ создаем снятым с публикации. После модерации менеджер включает его.
Нет комментариев