FormIt сохранить поля которых нет в форме

Здравствуйте! Столкнулся с таким вопросом.
Есть формы которые отправляют определенные данные и сохраняют их в FormIt. Но мне нужно чтобы дополнительно FormIt сохранял определенные данные, которых нет в форме (по определенным причинам я не хочу их там указывать, даже скрывая эти поля).
И вот даже не могу понять в какую сторону копать. В идеале это было бы сделать Плагин, чтобы в каждую форму не писать новый Хук, но и с Хуком в целом подойдет.

В документации ничего такого не нашел. Посмотрел Сниппет FormItSaveForm там есть такое:
$newFormArray = array(
        'form' => $formName,
        'date' => time(),
        'values' => $dataArray,
        'ip' => $modx->getOption('REMOTE_ADDR', $_SERVER, ''),
        'context_key' => $modx->resource->get('context_key'),
        'encrypted' => $formEncrypt,
        'encryption_type' => $encryptionType,
        'hash' => $formHashKey,
    );
Предполагаю что можно как-то запихнуть их в 'values' => $dataArray но как это сделать отстраненно от этого Сниппета, чтобы потом все не перезатерлось после обновления не могу понять.

Буду признателен за помощь.
Спасибо.
Роман
05 декабря 2022, 07:22
modx.pro
428
0

Комментарии: 7

Александр Лунегов
05 декабря 2022, 08:50
0
Вот здесь инструкция, как добавить информацию при помощи хука.
    Роман
    05 декабря 2022, 09:44
    0
    Спасибо, попробовал. Что-то не получается.
    Добавил хук:
    'hooks' => 'hook.utmsaveform,email,FormItSaveForm',
    Создал сниппет hook.utmsaveform:
    $hook->setValue('utm_source',   $_COOKIE['utm_source']);
    $hook->setValue('utm_medium',   $_COOKIE['utm_medium']);
    $hook->setValue('utm_campaign', $_COOKIE['utm_campaign']);
    $hook->setValue('utm_term',     $_COOKIE['utm_term']);
    $hook->setValue('utm_content',  $_COOKIE['utm_souutm_contentrce']);
    
    return true;
    И в просмотре форм пусто, нет этих полей, в БД тоже их нет :( Что делаю не так?
      Александр Лунегов
      05 декабря 2022, 10:06
      +1
      А сниппет получает массив $_COOKIE? И немного резануло глаз наименование сниппета с точкой. Вдруг FormIt не поддерживает подобное наименование хуков.
        Александр Лунегов
        05 декабря 2022, 10:08
        +1
        Проверьте так:
        $modx->log(xPDO::LOG_LEVEL_ERROR, $_COOKIE['utm_source']);
          Роман
          08 декабря 2022, 07:15
          0
          Спасибо, вы были правы, проблема с «точкой» в названии хука.
          НО! Сейчас в лог я смог вывести куку, но в форму так ничего и не записалось.
          Я просматриваю что записалось через плагин FormIt, где все сохраненные формы.
          Стоит вызов хука вроде правильно, перед email и FormItSaveForm:
          'hooks' => 'spam,hook.prepareForm,hookutmsaveform,email,FormItSaveForm',
          В базе данных тоже нет записей, смотрел.
            Александр Лунегов
            08 декабря 2022, 09:37
            +1
            Если у FormIt есть параметр formFields, то записываются только те поля, которые указаны в этом параметре.
              Роман
              11 декабря 2022, 07:59
              0
              Да, вы правы, были обозначены поля, из-за этого эти не прописывались.
              Спасибо, надо быть мне внимательнее.
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      7