К содержанию

ошибка обновления товара при второй и последующих

Добрый день.

За основу взял ваш код импорта из CSV
Добрый день. задача такая, взять товар и обновить в нем некоторые поля и фотографии.
первая итерация проходит нормально а последующие не выполняются, причем если отключить добавление картинок то все нормально работает

вот код:

$response = $modx->runProcessor('resource/update', $data);
                if ($response->isError()) {
                    $modx->log(modX::LOG_LEVEL_ERROR, "Error on $id: n". print_r($response->getAllErrors(), 1));
                    continue;
                }
                $resource = $response->getObject();
                $modx->log(modX::LOG_LEVEL_INFO, "Successful $id: n". print_r($resource, 1));
                
                //-------------
                
                if (!empty($gallery)) {
                    $modx->log(modX::LOG_LEVEL_INFO, "Importing images: n". print_r($gallery, 1));
                    foreach ($gallery as $v) {
                        if (empty($v)) {continue;}
                        $image = str_replace('//', '/', MODX_BASE_PATH . '/upload/tmp/'. $v);
                        if (!file_exists($image)) {
                            $modx->log(modX::LOG_LEVEL_ERROR, "Could not import image "$v" to gallery. File "$image" not found on server.");
                        }
                        else {
                            $response = $modx->runProcessor('gallery/upload',
                                array('id' => $id, 'name' => $v, 'file' => $image),
                                array('processors_path' => MODX_CORE_PATH.'components/minishop2/processors/mgr/')
                            );
                            if ($response->isError()) {
                                $modx->log(modX::LOG_LEVEL_ERROR, "Error on upload "$v": n". print_r($response->getAllErrors(), 1));
                            }
                            else {
                                $modx->log(modX::LOG_LEVEL_INFO, "Successful upload  "$v": n". print_r($response->getObject(), 1));
                            }
                        }
                    }
                }
для примера 1 итерация:
Массив
$data:
Array
(
    [context_key] => web
    [pagetitle] => Магнитный конструктор 
    [id] => 1560
    [tv2] => Детям от: 1 года до: 7 лет
    [vendor] => 144
    [size] => 
    [weight] => 0.3 кг.
    [content] => Дополнительный набор ...
)
$gallery:
Array
(
    [0] => 9b3357c45613c97d2b507c86f0b45ec8.jpg
)
Все проходит нормально.
2 итерация:
Массив
$data:
Array
(
    [context_key] => web
    [pagetitle] => Конструктор развивающий №2
    [id] => 1579
    [tv2] => Детям от: 7 лет до: 14 лет
    [vendor] => 115
    [size] => 30x8x25 см
    [weight] => 0.3 кг.
    [content] => Развивающий конструктор
)
$gallery:
Array
(
    [0] => 950a2c350525f3e60aa4bd50d50d372b.jpg
    [1] => a8f97e7db94f4a24a13970a4ebf36305.jpg
)
Выдается ошибка
[2014-03-26 18:23:03] (ERROR @ /core/components/minishop2/import/pars.php)

Error on 1579: 
Array
(
    [0] => /assets/images/products/1560/9b3357c45613c97d2b507c86f0b45ec8.jpg
)
к сожалению ошибка не информативна :(
Получается что ошибка вылезает при обновлении данных
$response = $modx->runProcessor('resource/update', $data)
но причем тут путь к изображению из прошлой итерации?

причем если снова запустить скрипт то товар 1579 обновится и вылезет та же ошибка на следующем обновлении

P.S картинки в '/upload/tmp/' точно есть
Alexander Soliar
Alexander Soliar
26 марта 2014, 15:23
modx.pro
3 046
Реклама

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

Sergey Perepechin
Sergey Perepechin Старожил
27 марта 2014, 00:57
Какая версия Modx у Вас сейчас стоит?
    Alexander Soliar
    Alexander Soliar Старожил
    27 марта 2014, 10:40
    MODX Revolution 2.2.10-pl (October 7, 2013)
      Sergey Perepechin
      Sergey Perepechin Старожил
      27 марта 2014, 12:04
      Обновляйся на 2.2.13, в твоей версии есть проблемы с phpThumb
        Alexander Soliar
        Alexander Soliar Старожил
        28 марта 2014, 13:53
        обновился до MODX Revolution 2.2.13-pl проблема осталась. есть еще идеи?
    Наумов Алексей
    Наумов Алексей Администратор
    30 мая 2014, 15:13
    Перед импортом каждой строки добавляем
    $modx->error->reset();
    Это сбрасывает ошибки, накопившиеся во время импорта прошлого товара. Подозреваю, что при импорте изображений эти ошибки должны были сброситься, но почему то этого не происходит.
      Василий Наумкин
      Василий Наумкин Администратор
      30 мая 2014, 17:14
      В последних версиях MS2 это вроде уже поправлено.
        Наумов Алексей
        Наумов Алексей Администратор
        30 мая 2014, 19:04
        Да вот только сегодня делал импорт, напоролся на это, minishop2 ставил из modx.com репозитория вчера или позавчера.
          Василий Наумкин
          Василий Наумкин Администратор
          30 мая 2014, 19:07
          Добавлено 25 января, версия 2.1.4-pl5.
            Наумов Алексей
            Наумов Алексей Администратор
            30 мая 2014, 19:25
            А, в скрипте то да, там есть =)

            Я же свой скрипт писал, ну и не сразу подумал о том, что надо ошибки сбрасывать. Подозреваю что автор топика тоже свой скрипт писал.
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      9