Как получить и изменить TV поле при обновлении страницы?

Приветствую

У меня есть TV поле с числом. Пытаюсь через плагин получить и изменить значение этого TV поля, но не получается. Подскажите пожалуйста как сделать на конкретном примере.

Пример:
— Значение TV по умолчанию равно 100
— При обновлении страницы оно должно увеличиваться на +5
weranda
10 февраля 2018, 16:25
modx.pro
1 388
0

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

Михаил
10 февраля 2018, 20:10
0
В документации хорошо написано
    weranda
    10 февраля 2018, 20:25
    0
    Сделал вот так:
    $e = &$modx->event;
    switch ($e->name) {
        case "OnLoadWebDocument":{
            $my_tv = $modx->resource->getTVValue('test2');
            $my_tv->setTVValue('test2', $my_tv + 5);
        }
    }
    В системных событиях плагина также отметил поле OnLoadWebDocument и в результате только белая страница.
      Михаил
      10 февраля 2018, 20:28
      0
      Попробуй так
      switch ($modx->event->name) {
          case "OnLoadWebDocument":{
              $my_tv = $modx->resource->getTVValue('test2');
              $my_tv->setTVValue('test2', (int)$my_tv + 5);
          }
      }
        weranda
        10 февраля 2018, 20:33
        0
        Все равно та же самая пустая белая страница появляется с 500 ошибкой.
          Андрей
          10 февраля 2018, 20:41
          0
          Если с 500й, смотри лог ошибок или серверный лог. Должно быть понятно почему отваливается.
            weranda
            10 февраля 2018, 20:47
            0
            И там и там чистота и порядок — ошибок нет.
              weranda
              10 февраля 2018, 21:18
              0
              На тестовом (чистом) MODX то же самое.
                Андрей
                10 февраля 2018, 21:27
                +1
                Не обратил сначала внимания на код:
                $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;
                }
                  weranda
                  10 февраля 2018, 21:47
                  0
                  Андрей, спасибо вам за помощь, работает!
                    Михаил
                    17 февраля 2018, 14:13
                    0
                    Да на скорую руку написал, запарился)
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        10