Мой код в сниппете msGetOrder исполняется несколько раз (3 раза)
Доброе утро, знатоки Modx, у меня вопрос такого характера, дорабатываю функционал оформления заказа а именно интеграция с Frontpad.
Свой код добавляю в сниппет msGetOrder который выполняется после нажатия кнопки оформить заказ, но мой код исполняется несколько раз (3 раза), в следствии чего в Frontpad приходят сразу 3 одинаковых заказа.
Спасибо.
Свой код добавляю в сниппет msGetOrder который выполняется после нажатия кнопки оформить заказ, но мой код исполняется несколько раз (3 раза), в следствии чего в Frontpad приходят сразу 3 одинаковых заказа.
if (!empty($toPlaceholder)) {
$modx->setPlaceholder($toPlaceholder, $output);
}
else {
// Код находится в данном месте
return $output;
}
Не могу разобраться почему это происходит, подскажите в чем причина.Спасибо.
Комментарии: 10
Может и не надо в сниппет эту логику добавлять, может лучше в плагин?
Это сниппет вызывается 1 раз после оформления заказа (на странице где в get-параметрах номер заказа)
И вызывается при отправке писем (пользователю и менеджерам).
Как вам уже посоветовали — делайте свой функционал в плагине docs.modx.pro/komponentyi/minishop2/razrabotka/sobyitiya
И вызывается при отправке писем (пользователю и менеджерам).
Как вам уже посоветовали — делайте свой функционал в плагине docs.modx.pro/komponentyi/minishop2/razrabotka/sobyitiya
Не пинайте сильно, первый раз можно сказать имею дело с Modx.
Вот я набросал вариант с использованием события:
Вот я набросал вариант с использованием события:
case 'msOnCreateOrder':
$msAddress = $msOrder->getOne('Address');
$msReceiver = $msAddress->get('receiver');
$msRoom = $msAddress->get('room');
$msBuilding = $msAddress->get('building');
$msComment = $msAddress->get('comment');
$msPhone = $msAddress->get('phone');
$post_url = "https://app.frontpad.ru/api/index.php?new_order";
$param['secret'] = "";
$gorod = 'Город';
$param['street'] = $gorod.', '.$msAddress;
$param['home'] = 'дом '.$msBuilding ;
$param['apart'] = 'кв '.$msRoom;
$param['phone'] = $msPhone;
$param['descr'] = $msComment;
$param['descr'] .= ' Оплата наличными. ';
$param['pay'] = 1;
$param['name'] = $msReceiver;
foreach ($param as $key => $value) {
$data .= "&".$key."=".$value;
}
foreach ($msOrder->getMany('Products') as $product) {
$options = $modx->getObject('msProductData', $product->get('product_id'));
$data .= "&product[]=". $options->get('article')."";
$data .= "&product_kol[]=".$product->get('count')."";
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $post_url);
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$result = curl_exec($ch);
curl_close($ch);
break;
Вставил я его в плагин miniShop2 после события case 'msOnChangeOrderStatus' ну и на выходе имею 2 дубля заказа, уже не 3 )))
Выглядит правдоподобно. Но вам нужно создавать свой собственный плагин. Иначе при обновлении miniShop может затереть ваши изменения.
А мы и не пинаем вовсе.
Советую не трогать плагины и сниппеты компонентов, потому как после обновления весь ваш код затрется.
Вам нужно: Создать плагин, перейти на вкладку события и выбрать нужные вам события и уже со спокойной душой написать свой код
Советую не трогать плагины и сниппеты компонентов, потому как после обновления весь ваш код затрется.
Вам нужно: Создать плагин, перейти на вкладку события и выбрать нужные вам события и уже со спокойной душой написать свой код
Так, ну с тем что выделить в отдельный плагин, я доки почитаю, сделаю. Я не могу понять почему дублируется отправление.
Давайте для начала перенесите логику в отдельный плагин, проверьте и посмотрим
Помоему дело не в плагине, нашел я вот сторонний плагин modstore.pro/packages/import-and-export/frontpadapi, история та же в frontpad приходит сразу 2 одинаковых заказа. Что еще может влиять на повторную отправку?
Ну не может быть что и плагин другого разработчика быть с такой же бедой что и самописанный?
Ну не может быть что и плагин другого разработчика быть с такой же бедой что и самописанный?
Дата, номер заказа абсолютно идентичные прилетают.
Проблема решилась обновлением minishop до версии 2-2.4.18.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.