Имеем систему тикетов. Скрипт подключен в личном кабинете Опенкарт catalog/view/theme/default/template/account/order_info.tpl <div class="form-group"> <button type="button" id="button-quick-popup-ticket" data-loading-text="загрузка" class="btn btn-primary btn-lg btn-block">оформить запрос</button> </div> <div class="modal fade" id="quick-popup-modal" role="dialog"> <div class="modal-dialog modal-lg" role="document"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> <h4 class="modal-title" id="quick-popup-modal-title"></h4> </div> <div class="modal-body" id="quick-popup-modal-body"> </div> </div> </div> </div> <script type="text/javascript"> $('#button-quick-popup-ticket').on('click', function() { $.ajax({ url: 'index.php?route=ticket/ticket/popup', type: 'post', data: 'product_id= <?php foreach ($products as $product) { ?><?php echo $product['product_id']; ?>, <?php } ?>', dataType: 'json', beforeSend: function() { $('#button-quick-popup-ticket').button('loading'); }, complete: function() { $('#button-quick-popup-ticket').button('reset'); }, success: function(json) { if (json['redirect']) { location = json['redirect']; } if (json['heading_title']) { $('#quick-popup-modal-title').html(json['heading_title']); } if (json['error']) { $('#quick-popup-modal-body').html('<div class="text-danger" style="color:#F00;">' + json['error'] + '</div>'); } if (json['content']) { if(!$('#quick-popup-modal-body').find('#form-quick-popup-ticket').length) { $('#quick-popup-modal-body').html(json['content']); } } $('#quick-popup-modal').modal('show'); }, error: function(xhr, ajaxOptions, thrownError) { alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText); } }); }); </script> в контроллре тикета $this->request->post['message'] = '<a href="' . $this->url->link('product/product', 'product_id=' . $this->request->get['product_id'], true) . '" target="_blank">' . $this->model_ticket_ticket->getProductName($this->request->get['product_id']) . '</a> - ' . $this->request->post['message']; В инспекторе кода согласно data: 'product_id= <?php foreach ($products as $product) { ?><?php echo $product['product_id']; ?>, <?php } ?>', Отображается корректно 3 ID товаров, но, "улетает" только один При отправке тикета вместо ( к примеру) 3 товаров на странице в тикет удетает только первый товар ( с корректной ссылкой) Хочется решения как сделать что бы в тикет попадали все товары с страницы личного кабинета ( к примеру куплено 3 товара и по всем трем товарам нужно задать вопрос) Буду благодарен за практическую помощь... теории я за 4 дня уже начитался (результат нулевой) . Заранее спасибо
В коде есть, значение data для AJAX-запроса формируется с помощью цикла foreach PHP: data: 'product_id= <?php foreach ($products as $product) { ?><?php echo $product['product_id']; ?>, <?php } ?>', Однако, в этом коде есть лишняя запятая после последнего product_id, которая может стать причиной ошибки. Чтобы исправить это, можно использовать функцию implode() вместо цикла foreach, чтобы объединить все product_id в одну строку с разделителем запятая PHP: var productIds = "<?php echo implode(',', array_column($products, 'product_id')); ?>"; Полученную строку productIds можно использовать в data для передачи всех product_id PHP: data: 'product_id=' + productIds, Также, в контроллере тикета нужно изменить код, чтобы он обрабатывал все product_id в message, а не только первый. Можно использовать цикл foreach для этого PHP: foreach ($products as $product) { $this->request->post['message'] .= '<a href="' . $this->url->link('product/product', 'product_id=' . $product['product_id'], true) . '" target="_blank">' . $this->model_ticket_ticket->getProductName($product['product_id']) . '</a> - ';}$this->request->post['message'] = rtrim($this->request->post['message'], ' - '); Здесь мы сначала добавляем ссылку для каждого product_id, а затем удаляем последний символ " - ", который добавляется после последнего product_id.