И записывается и не записывается значение TV при сохранении ресурса.

Доброго времени суток!

Пишу, казалось бы, элементарный плагин, который при сохранении ресурса проверяет заполнено ли определённое TV-поле и в случае если оно не заполнено вставляет в него случайно сгенерированную строку. Но почему-то TV-поле после сохранения остаётся пустым, хотя строка
$modx->log(1, $resource->getTVValue('customer_secret_key'));
выводит в лог сгенерированную строку.

<?php
if ($resource->get('template') == 7) {
  switch ($modx->event->name) {
    case 'OnDocFormSave':
      if (empty($resource->getTVValue('customer_secret_key'))) {
        $chars = 'abdefhiknrstyzABDEFGHKNQRSTYZ23456789';
        $numChars = strlen($chars);
        $key = '';
        for ($i = 0; $i < 18; $i++)
          $key .= substr($chars, rand(1, $numChars) - 1, 1);
        
        if(!$resource->setTVValue('customer_secret_key', $key))
          $modx->log(1, 'ERROR!');
        else
          $modx->log(1, $resource->getTVValue('customer_secret_key'));
      }
    break;
  }
}
Вроде бы всё правильно или я просто не вижу какой-то хитрой ошибки?

$resource->save не вызываю, т.к. вычитал, что в случае с setTVValue это не обязательно.
В любом случае и с вызовом $resource->save ничего не меняется.
Евгений
26 мая 2018, 15:37
modx.pro
699
0

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

Евгений
26 мая 2018, 19:19
0
Кажется пора отдохнуть) Нужно было после сохранения ресурса просто обновить страницу. Осталось дописать плагин чтобы производилась автоматическая перезагрузка страницы.
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    1