Обновление MIGX ДРУГОГО тикета при сохранении документа
Добрый день!
Необходимо при сохранении Заказов обновить определённое поле MIGX в Исполнителях
Создал плагин на OnDocFormSave
При сохранении — бесконечное сохранение.
Что я делаю не так?
Необходимо при сохранении Заказов обновить определённое поле MIGX в Исполнителях
Создал плагин на OnDocFormSave
При сохранении — бесконечное сохранение.
Что я делаю не так?
<?php
if ($modx->event->name=="OnDocFormSave") // Плагин срабатывает при сохранении ресурса
{
$id = $resource->get('id'); // Получаю id ресурса
$parent = $resource->get('parent'); // Получаем id родителя
if($parent!=2) //id раздела с тикетами Заказов =2, остальные не трогаю
{
return;
}
$migx = $modx->resource->getTVValue('vibce');
$items = $modx->fromJSON($migx);
foreach($items as $item) {
$reskuda = $modx->getObject('modResource', $item['celovecus']); // celovecus - id исполнителя
$migxkuda=$reskuda->getTVValue('vibzak');
$itemskuda = $modx->fromJSON($migxkuda);
$naideno=0;
$output = array();
foreach($itemskuda as $itemkuda) {
$output[] = $itemkuda['zakazus'];
if($itemkuda['zakazus']==$id) // есть ли у исполнителя такой заказ
{
$naideno=1;
}
}
if($naideno==0) // такого заказа нет
{
$itemkuda['zakazus'] = $id;
$output[] = $itemkuda;
$reskuda->setTVValue('vibzak', $modx->toJSON($output));
}
}
}
Комментарии: 6
Бесконечное сохранение — скорее всего ошибка 500 при выполнении php, см. логи modx и сервера.
Точно стоит добавить проверку на существование объекта $reskuda после его получения.
Точно стоит добавить проверку на существование объекта $reskuda после его получения.
Товарищи!
ОЧЕНЬ большая просьба прояснить — почему MIGX не сохраняется?
Я так понял — не требуется знания структуры JSON-файла ( $modx->fromJSON($migxkuda) и $modx->toJSON($output) всё сделают сами) и проверка существования полей в MIGX — что я делаю не так?
ОЧЕНЬ большая просьба прояснить — почему MIGX не сохраняется?
Я так понял — не требуется знания структуры JSON-файла ( $modx->fromJSON($migxkuda) и $modx->toJSON($output) всё сделают сами) и проверка существования полей в MIGX — что я делаю не так?
Штааааа?
Ну я вот написал, логи смотрели? Есть там что?
Поэтапно пробовали отлаживать?
Комментировать код блоками, найти строчку, где ошибка.
У меня в голове нет встроенного интерпретатора, чтобы ваш код запустить и понять, с чего он вдруг не работает.
Ну я вот написал, логи смотрели? Есть там что?
Поэтапно пробовали отлаживать?
Комментировать код блоками, найти строчку, где ошибка.
У меня в голове нет встроенного интерпретатора, чтобы ваш код запустить и понять, с чего он вдруг не работает.
Там всего одна значащая строка, и да, я просто НЕ ЗНАЮ, как работать с MIGX из php (MIGX создан в конфигураторе) — НАДО ЛИ предварительно формировать что-то ещё?
$reskuda->setTVValue('vibzak', $modx->toJSON($output));
В инете полно повторяющейся информации о том, как работать с MIGX из MODX (getImageList, this.render — я уже с этим разобрался, крутые вещи прямо в админке), ну вот ГДЕ взять ПОЛНУЮ информацию о MIGX?
— я поэтому прошу выложить НЕБОЛЬШОЙ работающий пример
$reskuda->setTVValue('vibzak', $modx->toJSON($output));
В инете полно повторяющейся информации о том, как работать с MIGX из MODX (getImageList, this.render — я уже с этим разобрался, крутые вещи прямо в админке), ну вот ГДЕ взять ПОЛНУЮ информацию о MIGX?
"У меня в голове нет встроенного интерпретатора, чтобы
ваш код запустить и понять, с чего он вдруг не работает."
— я поэтому прошу выложить НЕБОЛЬШОЙ работающий пример
Попробуй в конце кода вставить строку
return;
Думаю, что проблема не в этом — еще и MIGX Исполнителя не обновляется…
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.