MIGX - запись с фронта

Всем привет. Подскажите, где ошибка в хуке, отдает success, но запись не делает
<?php
$tv_id = 1; //вместо 10 укажите ID Вашей MIGX-TV
$res_id = 14; //вместо 12 укажите ID ресурса с этой MIGX-TV
 
$marka = $hook->getValue('marka'); // получаем значение поля title
$gos = $hook->getValue('gos'); // получаем значение поля text

$email = $hook->getValue('email');

//Получаем объект TV
$tvr = $modx->getObject('modTemplateVarResource', array(
  'tmplvarid' => $tv_id,
  'contentid' => $res_id
));
$tv = $tvr->get('value'); //получаем существующие данные из этой TV.

$arr = json_decode($tv, true); //преобразуем JSON в простой массив
$last = end($arr); //получаем последний элемент
$max = $last['MIGX_id']; //узнаем значение MIGX_id для последнего элемента
$max++; //увеличиваем на единицу
$new = array( //формируем новый элемент с новыми полями и MIGX_id
    'MIGX_id' => $max,
    'marka' => $marka,
    'gos' => $gos
    );
$arr[] = $new; //добавляем его в конец массива
$new_tv = json_encode($arr); //переводим итоговый массив в JSON-строку.

$resource = $modx->getObject('modResource', $res_id); //Получаем объект ресурса с MIGX-TV
$resource->setTVValue($tv_id, $new_tv); //записываем данные
return true;
Сергей Лим
28 ноября 2019, 08:26
modx.pro
1 047
0
Поблагодарить автора Отправить деньги

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

Павел Романов
28 ноября 2019, 10:46
+1
Добавьте запись в лог, посмотрите, что в $new_tv:
....
$new_tv = json_encode($arr); //переводим итоговый массив в JSON-строку.
$modx->log(modX::LOG_LEVEL_ERROR, $new_tv );
....
    Тодор
    28 ноября 2019, 18:25
    +1
    Перед return допиши
    $resource->save();
      Woxis
      22 декабря 2020, 17:21
      0
      Добрый день, не могли бы вы описать подробнее данный прием, интересует где вы используете $hook. Ваш код работает записывает данные в migx, хотелось бы понять как записывать данные с фронта вернее как их передавать. Если вам не трудно опишите вашу реализацию подробнее.
        Сергей Лим
        22 декабря 2020, 17:29
        0
        вот рабочий пример
        <?php
        $tv_id = 15; //вместо 10 укажите ID Вашей MIGX-TV
        $thisid = $modx->resource->id;
        $res_id = $thisid; //вместо 12 укажите ID ресурса с этой MIGX-TV
         
        $tipauto = $hook->getValue('tipauto'); // получаем значение поля title 
        $marka = $hook->getValue('marka'); // получаем значение поля title
        $gos = $hook->getValue('gos'); // получаем значение поля text
        $gpt = $hook->getValue('gpt'); // получаем значение поля text
        
        
        //Получаем объект TV
        $tvr = $modx->getObject('modTemplateVarResource', array(
          'tmplvarid' => $tv_id,
          'contentid' => $res_id
        ));
        if ($tvr == ''){
            $max = 1;
        } else {
        $tv = $tvr->get('value'); //получаем существующие данные из этой TV.
        
        $arr = json_decode($tv, true); //преобразуем JSON в простой массив
        $last = end($arr); //получаем последний элемент
        $lastend = end ($last);
        $max = $lastend['MIGX_id']; //узнаем значение MIGX_id для последнего элемента
        
        $max++;} //увеличиваем на единицу
        $new = array( //формируем новый элемент с новыми полями и MIGX_id
            'MIGX_id' => $max,
            'tipauto' => $tipauto,
            'marka' => $marka,
            'gos' => $gos,
            'gpt' => $gpt
            );
        $arr[] = $new; //добавляем его в конец массива
        
        
        $new_tv = json_encode($arr); //переводим итоговый массив в JSON-строку.
        $modx->log(modX::LOG_LEVEL_ERROR, $new_tv );
        $resource = $modx->getObject('modResource', $res_id); //Получаем объект ресурса с MIGX-TV
        $resource->setTVValue($tv_id, $new_tv); //записываем данные
        $resource->save();
        return true;
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        4