Отмена заказа клиентом в Opencart 3

#opencart-3

#opencart-3

Вопрос:

По умолчанию у клиента нет возможности отменить заказ из своей учетной записи. Администратор магазина может сделать это из панели администратора.

Мы хотим p отменить заказ клиентом

   <file path="catalog/view/theme/default/template/account/order_list.twig">
    <operation>
            <search><![CDATA[ <td class="text-right">{{ order.total }}</td>]]></search>
            <add position="after"><![CDATA[

        <td class="text-right">
  

Отменить заказ, nr {{ order.order_id }}

             ]]></add>
    </operation>
</file>
  

php отмена

 <?php session_start(); ?>
<?php 
$customer_id = $_SESSION['default']['customer_id'];
if ($customer_id == ''){
exit;
}
//echo $customer_id;
 
$order_id = mysql_escape_string($_GET['order_id']);
if ($order_id == ''){
exit;	
}
include 'config.php';
	$link = mysql_connect(DB_HOSTNAME, DB_USERNAME, DB_PASSWORD);
	mysql_select_db(DB_DATABASE); 
	if (!$link) {
    	die('Could not connect: ' . mysql_error());
	}
$updateSQL = mysql_query("UPDATE oc_order SET order_status_id = '7' where order_id = '$order_id;' and customer_id = '$customer_id'");
 
?>
<script>alert("The order was canceled!");
window.location.replace('/')
</script>  

Результат

Обратите внимание: Неопределенный индекс: по умолчанию в C:xampphtdocs3020cancel-order.php в строке 3

Ответ №1:

  1. Вы неправильно вводите идентификатор клиента

заменить

 $customer_id = $_SESSION['default']['customer_id'];
  

с

 $customer_id = $this->customer->getId();
  
  1. Также $ _GET[‘order_id’] лучше всего выбирать следующим образом
 $order_id = $this->request->get['order_id']
  
  1. вы должны использовать объект базы данных вместо самостоятельного подключения
 $this->db->query('...');
  

на самом деле, весь код не подходит для OpenCart. вам следует попробовать прочитать документацию, чтобы узнать больше о таких вещах, как MVC и как работает реестр OpenCart

если вам нужна помощь разработчиков, отправьте запрос мне по https://dreamvention.ee/support