После обновления не работает добавление tv_add в Shopkeeper

после обновления до 1.2-d9.0.6 сайта с магазином Shopkeeper не записываются в сессию дополнительные параметры через tv_add, это список товаров в наборе, на цену не влияет, но без этого непонятно, что именно купили

все на своем месте:

на странице товара выводится правильно select name=«books__22__add[]» multiple=«multiple»
проверяю перед покупкой выбранные значения через console.log( jQuery('#add-22').val() ) — все на месте. нажимаем купить, переходим в корзину и — тишина

в корзину дополнительные параметры должны выводиться плейсхолдером [+addit_data+] — здесь уже ничего не выводится и соответственно дальше не пишется в базу (раньше записывалось в content). в корзине проверяю параметр $_SESSION['addit_params'] — пусто (пустой JSON a:1:{i:0;a:0:{}} )

до обновления все работало.
кроме обновления ничего не менялось.
смотрела файл shopkeeper.class.php — там на месте все строки, которые отвечают за обработку конструкции с __add

4 комментария

avatar
В логе нет ошибок?
  • Shin
  • 0
avatar
есть
PHP Warning: strlen() expects parameter 1 to be string, array given in /home/c/cl120152/4catering.ru/public_html/assets/snippets/shopkeeper/classes/class.shopkeeper.php on line 217

в class.shopkeeper.php
строка 216 foreach($purchaseArray as $key => $value){
строка 217 if(preg_match("/".$p_id."/",$key) && strlen($value)>0){

значение — массив, а не строка. почему так и как это исправить?

если print_r($purchaseArray) на странице товара, то после добавления в корзину
видно, что books__22__add — массив. как бы теперь код шопкипера доработать?

Array
(
[action] => fill_cart
[site_url] => 4catering.ru/
[cart_type] => small
[cart_tpl] => cart
[cart_row_tpl] => cartRow-short
[addit_data_tpl] =>
[currency] => Р
[price_tv] => price
[link_allow] => true
[nocounter] => false
[change_price] => false
[order_page] => korzina-podtverzhdenie-zakaza.html
[shk-name] => Набор из 2-х книг
[books__22__add] => Array
(
[0] => «Ресторан выездного обслуживания...»
[1] => «Кейтеринг. Продажа услуг и стратегия отношений»
)

[lang] => russian-UTF8
)
Array
(
[0] => 22
[catalog] => 0
[1] => 1
[2] => 1350
)
Комментарий отредактирован 2017-01-11 18:26:46 пользователем anastasiauz
avatar
надо в строку переводить, видимо, потому что если заменить strlen()>0 на !empty($value) дальше в корзине ошибка explode() expects parameter 2 to be string, array given
avatar
добавила после строки 216 foreach($purchaseArray as $key => $value){

if(is_array($value)){
$value = implode(',',$value);
}

не знаю, насколько это правильное решение, но пока все работает
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.