Как получить и изменить TV поле при обновлении страницы?
Приветствую
У меня есть TV поле с числом. Пытаюсь через плагин получить и изменить значение этого TV поля, но не получается. Подскажите пожалуйста как сделать на конкретном примере.
Пример:
— Значение TV по умолчанию равно 100
— При обновлении страницы оно должно увеличиваться на +5
У меня есть TV поле с числом. Пытаюсь через плагин получить и изменить значение этого TV поля, но не получается. Подскажите пожалуйста как сделать на конкретном примере.
Пример:
— Значение TV по умолчанию равно 100
— При обновлении страницы оно должно увеличиваться на +5
Комментарии: 10
В документации хорошо написано
Сделал вот так:
$e = &$modx->event;
switch ($e->name) {
case "OnLoadWebDocument":{
$my_tv = $modx->resource->getTVValue('test2');
$my_tv->setTVValue('test2', $my_tv + 5);
}
}
В системных событиях плагина также отметил поле OnLoadWebDocument и в результате только белая страница.
Попробуй так
switch ($modx->event->name) {
case "OnLoadWebDocument":{
$my_tv = $modx->resource->getTVValue('test2');
$my_tv->setTVValue('test2', (int)$my_tv + 5);
}
}
Все равно та же самая пустая белая страница появляется с 500 ошибкой.
Если с 500й, смотри лог ошибок или серверный лог. Должно быть понятно почему отваливается.
И там и там чистота и порядок — ошибок нет.
На тестовом (чистом) MODX то же самое.
Не обратил сначала внимания на код:
Вот так работает:
$my_tv = $modx->resource->getTVValue('test2'); // тут ты получаешь значение 100
$my_tv->setTVValue('test2', (int)$my_tv + 5); //а тут пытаешься записать его неизвестно куда :)
Вот так работает:
<?php
switch ($modx->event->name) {
case "OnLoadWebDocument":
$num = intval($modx->resource->getTVValue('num')) + 5;
$modx->resource->setTVValue('num', $num);
//$modx->log(1,$num);
break;
}
Андрей, спасибо вам за помощь, работает!
Да на скорую руку написал, запарился)
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.