И записывается и не записывается значение TV при сохранении ресурса.
Доброго времени суток!
Пишу, казалось бы, элементарный плагин, который при сохранении ресурса проверяет заполнено ли определённое TV-поле и в случае если оно не заполнено вставляет в него случайно сгенерированную строку. Но почему-то TV-поле после сохранения остаётся пустым, хотя строка
$resource->save не вызываю, т.к. вычитал, что в случае с setTVValue это не обязательно.
В любом случае и с вызовом $resource->save ничего не меняется.
Пишу, казалось бы, элементарный плагин, который при сохранении ресурса проверяет заполнено ли определённое 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 ничего не меняется.
Комментарии: 1
Кажется пора отдохнуть) Нужно было после сохранения ресурса просто обновить страницу. Осталось дописать плагин чтобы производилась автоматическая перезагрузка страницы.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.