[РЕШЕНО] Ошибка при больших заказах в Shopkeeper

Приветствую!
использую MODx EVO 1.2.1, Shopkeeper 1.3.6RC
столкнулся с проблемой…
оптовый покупатель прислал большой заказ через сайт
Пришло письмо на почту с заказом, всё ок
а в админке не могу его открыть, пишет


Error : Invalid argument supplied for foreach()

Shopkeeper - управление заказами

Warning: Invalid argument supplied for foreach() in /путь/assets/snippets/shopkeeper/classes/class.shopkeeper.php on line 437
Warning: Invalid argument supplied for foreach() in /путь/assets/snippets/shopkeeper/classes/class.shk_manager.php on line 258
Warning: Invalid argument supplied for foreach() in /путь/assets/snippets/shopkeeper/classes/class.shk_manager.php on line 624
Warning: Invalid argument supplied for foreach() in /путь/assets/snippets/shopkeeper/classes/class.shopkeeper.php on line 437
Warning: Invalid argument supplied for foreach() in /путь/assets/snippets/shopkeeper/classes/class.shopkeeper.php on line 492
Warning: Invalid argument supplied for foreach() in /путь/assets/snippets/shopkeeper/classes/class.shopkeeper.php on line 614

другие заказы в несколько позиций открывает без проблем

есть способ это поправить?
спасибо!

7 комментариев

avatar
потому что надо изменить тип поля в БД. На longtext, вроде так.
avatar
пробовал менять в таблице modx_manager_shopkeeper поле content на longtext, безрезультатно(
avatar
А ожидалось, что данные которые не влезли в TEXT (или что там по умолчанию), появятся в базе? (:
avatar
ожидалось, что в админке на весь заказ можно будет посмотреть)
avatar
может быть есть настройка не доставать в это поле (modx_manager_shopkeeper content) абсолютно все TV для товара?
avatar
1. Посмотрите сохранился ли заказ в БД полностью или нет.
2. Если заказ сохранился не полностью, значит надо копать в сторону max_input_vars и ошибка вылетает из-за того, что заказ записался в БД не полностью и shopkeeper соответственно не может распарсить битые данные.
3. Если в БД всё ок, то копайте в сторону кавычек в передаваемых/сохраняемых данных, т.к. у меня, например, была проблема вроде бы в функции getCartContent, когда ошибка была именно в экранировании кавычек при сериализации. Исправлял таким образом (но это было давно и не уверен, что данное решение подойдёт), перед 819 строкой в файле class.shopkeeper.php добавил следующее:
$_SESSION['purchases'] = preg_replace('!s:(\d+):"(.*?)";!e', "'s:'.strlen('$2').':\"$2\";'", $_SESSION['purchases']);
Комментарий отредактирован 2017-06-26 13:11:33 пользователем EGO
  • EGO
  • +2
avatar
Да, спасибо
заказ обрезанным записался
новые большие хорошо ложатся с longtext
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.