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;
Поблагодарить автора
Отправить деньги
Комментарии: 4
Добавьте запись в лог, посмотрите, что в $new_tv:
....
$new_tv = json_encode($arr); //переводим итоговый массив в JSON-строку.
$modx->log(modX::LOG_LEVEL_ERROR, $new_tv );
....
Перед return допиши
$resource->save();
Добрый день, не могли бы вы описать подробнее данный прием, интересует где вы используете $hook. Ваш код работает записывает данные в migx, хотелось бы понять как записывать данные с фронта вернее как их передавать. Если вам не трудно опишите вашу реализацию подробнее.
вот рабочий пример
<?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;
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.