Денис Мавлютов

Денис Мавлютов

С нами с 02 февраля 2017; Место в рейтинге пользователей: #1479

Не создает файл Word через Hook в AjaxForm

Я написал php код в отдельном файле и сохранил его на сервере. Его задача подтягивать поля из формы и создавать Word документ через PhpWord.

Если отправлять форму указывая путь к PHP файлу в Action, то всё работает нормально, но по хорошему, надо сделать через hook в админке modx.

Я попробовал просто вставить код в созданный мной сниппет и подключить его к hook`ам в AjaxForm
Так не работает и спустя несколько часов поиска я решил сюда отписать.

В «Журнале ошибок» пусто.

<?php
   // что-то там с валидацией, без него вроде дальше по хукам не проходит и форма не отправится. 
   $output = true;
   
   // путь к каталогам, для сокращение ссылок 
   $path = '/var/www/*****/data/';
   
   require $path . 'vendor/autoload.php';

   $document = new \PhpOffice\PhpWord\TemplateProcessor($path . "www/*****/phpword/brif_template.docx");
   
   // По инструкции из PhpWord 
   $uploadDir = __DIR__;
   $outputFile = 'review_full.docx';
   
   
   // Подтягиваем поля из форм
   $campony_name = $hook->getValue('campony_name');
   $document->setValue('campony_name', $campony_name);
   
   $contact_name = $hook->getValue('contact_name');
   $document->setValue('contact_name', $contact_name);
   
   $current_site = $hook->getValue('current_site');
   $document->setValue('current_site', $current_site);
   
   $region = $hook->getValue('region');
   $document->setValue('region', $region);
   
   $phone = $hook->getValue('phone');
   $document->setValue('phone', $phone);
   
   $mail = $hook->getValue('mail');
   $document->setValue('mail', $mail);
   
   $business_line = $hook->getValue('business_line');
   $document->setValue('business_line', $business_line);
   
   $competitors = $hook->getValue('competitors');
   $document->setValue('competitors', $competitors);
   
   
   // Сохраняет на сервере
   $document->saveAs($outputFile);
   
return $output;


<section class="main__request request" style=" margin: 100px auto; ">
   <div class="request__container container">
      <div class="request__inner">
         <div class="request__form" style=" margin: 0 auto; ">
            
            [[!AjaxForm?
               &snippet = `FormIt`
               
               &form = `brifForm.tpl`
               &emailTpl = `brifMail.tpl`
               
               &hooks = `PHPWordForm,spam,email,FormItSaveForm`
               
               &fromName = `Запись онлайн`
               &formFields = `mail,phone`
               &fieldNames = `mail==E-Mail,phone==Телефон,campony_name==Сообщение`
               
               &emailFrom = `[[++email_from]]`
               &emailFromName = `Форма обратной связи`
               &emailSubject = `Заявка со страницы - [[*pagetitle]]`
               &emailTo = `t2nda@yandex.ru`
               
               
               &validationErrorMessage = `В форме содержатся ошибки!`
               
               &successMessage = `Спасибо за обращение в нашу компанию! 

Менеджер свяжется с вами в ближайшее время`
            ]]
      </div>
   </div>
</section>

<form
   class="request__form form"
   action="[[~[[*id]]? &scheme=`full`]]"
   enctype="multipart/form-data"
   method="POST"
>
   
   <div class="form__field">
      <input type="text" class="form__input" name="campony_name" placeholder="campony_name">
   </div>
   <div class="form__field">
      <input type="text" class="form__input" name="contact_name" placeholder="contact_name">
   </div>
   <div class="form__field">
      <input type="text" class="form__input" name="current_site" placeholder="current_site">
   </div>
   <div class="form__field">
      <input type="text" class="form__input" name="region" placeholder="region">
   </div>
   <div class="form__field">
      <input type="text" class="form__input" name="phone" placeholder="phone">
   </div>
   <div class="form__field">
      <input type="text" class="form__input" name="mail" placeholder="mail">
   </div>
   <div class="form__field">
      <input type="text" class="form__input" name="business_line" placeholder="business_line">
   </div>
   <div class="form__field">
      <input type="text" class="form__input" name="competitors" placeholder="competitors">
   </div>
   
   
   <button class="form__button button button--rounded button--vertical-gradient button--light-blue-blue-gradient" type="submit">
      <span>
         Оставить заявку
      </span>
   </button>
   
</form>


Я не спец в php, обычно мелкие правки вносил и пользуюсь готовыми решениями.

По задаче, мне нужно будет отправить сгенерированный файл по почте и потому решил сделать через AjaxForm, чтобы отдельно обработчик не писать. Во первых — я нуб в этом, во вторых — мне кажется так будет правильно.
Денис Мавлютов
10 августа 2023, 14:55
modx.pro
322
0

Белый экран после переноса сайта на другой хостинг

Сразу к моему порядку действий, так как я уже 2 дня одну и ту же инструкцию с разных сайтов воплощал.

MODx Revo 3.0.1
PHP Version 7.3.31
Перенос с NIC на Beget

Перед переносом:
  1. Захожу в админку и удаляю cash через панель управления
  2. Отключаю RSS, компрессии и новости
  3. Ручками чищу еще на FTP папку cash/*
  4. Один раз даже пробовал отключить френдли сылки (где-то советовали)
  5. Проверю по списку:
    1. из админки выкинуло
    2. в базе данных стоит по 0 для rss и компрессии
    3. папки с cash пуста
Денис Мавлютов
25 января 2023, 14:57
modx.pro
753
0

Отправка файла через Formit (Ajax) добавленный через DropFile (Dropzone, drag&drop)

Я нашел несколько тем на форуме. Перерыл много ссылок но не смог разобраться в самом главном.
Как прикрепить файлы закинутые в Dropzone к отправляемой форме?

Поменять значение input type=file нельзя по соображением безопасности.
Денис Мавлютов
11 января 2023, 19:01
modx.pro
715
0

CKEditor вставка из Word не теряя цвет текста.

Как сделать вставку в визуальный редактор CKEditor из Word без потери цвета.




Денис Мавлютов
17 апреля 2017, 15:19
modx.pro
992
0

AjaxForm пишет что отправил письмо, но его нет

AjaxForm пишет что отправил письмо, но в админке и на ящике его нет.
Не могу понять в чем проблема.
FormIt — 2.2.11-pl
AjaxForm — 1.1.7-pl

[[!AjaxForm?
    &snippet=`FormIt`
    &hooks=`FormItSaveForm,email` 
    &emailTo=`*****@yandex.ru`
    &formName=`test_name`
    &form=`@CODE:
        	<form action="[[*uri]]">
                <input type="text" name="name" placeholder="Ваше имя">
                <input type="email" required placeholder="Ваш Email">
                <button type="submit">Отправить</button>
            </form>`
    &emailTpl=`@CODE:
                ОТ: [[*email]]
                Имя: [[*name]]
                Сообщение: [[*message]]`
    &emailFromName=`em_test_name`
    &emailFrom=`****@yandex.ru`
    &emailSubject=`test_sub`
    &successMessage=`Заявка успешно отправлена!`
    &validate=`email:required`
]]
Денис Мавлютов
09 февраля 2017, 12:01
modx.pro
659
0

Как реализовать случайные li для ul?

Как можно сделать, что бы для одного ul выдавало несколько случайных li. Допустим из 10 li, будет выходить рандомные 3?
Денис Мавлютов
08 февраля 2017, 11:15
modx.pro
911
0

Ошибка PHP notice: Undefined variable: hook

На что он может ругаться? Предполагаю что AjaxForm, но перебрал хуки от ошибки не избавился.
(WARN @ /var/www/restvm/data/www/rest-vm.ru/core/cache/includes/elements/modsnippet/35.include.cache.php : 41) PHP notice: Undefined variable: hook
Денис Мавлютов
07 февраля 2017, 07:34
modx.pro
1 826
0

AjaxForm перезагружает страницу

Проблема такая, я делаю вызов AjaxForm на странице и при отправке перезагружает страницу.

Денис Мавлютов
02 февраля 2017, 10:53
modx.pro
3 337
0