Всем привет! Задача при оформлении заказа, у товара поле sku добавилось в бд. Поле sku в таблице order_product создано. Разбираюсь с файлами и есть несколько вопросов: 1. Нужно ли обязательно выводить sku в пользовательской части магазина, чтобы данные записывались в бд? 2. Для чего нужен файл /catalog/controller/api/cart.php?
1. Нет, не обязательно. 2. Доступ к методам апи со стороны, обычно из админ панели при редактировании заказа.
Т.е. по факту мне нужны файлы только? /catalog/controller/checkout/confirm.php /catalog/model/checkout/order.php Нужны ли файлы? /catalog/controller/api/order.php /catalog/controller/api/cart.php /catalog/controller/checkout/order.php
Почему Вы спрашиваете, а нужно ли то или это? На данный момент не сложно проследить путь прохождения данных. Ну и вообще, нужно подходить к вопросу "зачем", а не "как". Например, зачем добавлять в бд поле sku, если оно уже присутствует изначально в бд и оно не изменяемое с витрины? А поэтому достаточно просто поменять контроллер в плане выборки и просто добавить sku в выборку, например в том случаи если нужно просто вывести информацию где то. А вот записывать в БД в таблицу order_product нужно тогда, когда это поле в будущем может измениться, например в поле записана имя менеджера, который продал товар. Тогда да. И тут давайте посмотрим, как идут данные и лучше наверно от обратного. \catalog\model\checkout\order.php тут видим public function addOrder($data) { и то что в таблицу order_product добавляется все что пришло из $data Хорошо, идем на уровень ниже, где используется addOrder Находим \catalog\controller\checkout\confirm.php там видим, PHP: $this->model_checkout_order->addOrder($order_data); и смотрим, что по коду в $order_data а там формируется массив данных... смотрим внимательно выше и находим что то с товарами PHP: foreach ($this->cart->getProducts() as $product) { Понимаем, что тут без библиотеки cart не обойтись. Ну идем туда \system\library\cart\cart.php смотрим на getProducts и видим что формируется опять массив данных с товарами из БД запросом PHP: $product_query = $this->db->query("SELECT * FROM " на основе того, что лежит в корзине, в данном варианте в таблице БД PHP: $cart_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "cart И далее, подготавливается массив в конце $product_data[] = array( и как раз там и формируются данные, которые и в итоге уходят в запись, типа PHP: 'length_class_id' => $product_query->row['length_class_id'], И вот тут мы понимаем, что подготовлено в корзине, т.е в массиве из getProducts то в итоге и попадает в addOrder($data) и тем самым можно будет использовать в изменении запроса PHP: $this->db->query("INSERT INTO " . DB_PREFIX . "order_product
Без Вашей помощи на самом деле было сложно, я как раз не додумался рассматривать корзину (\system\library\cart\cart.php) да и смотрю придётся еще добавлять информацию в checkout. @Ravilr, подскажите пожалуйста, если я захочу создать поле manager в таблице order_data То в модели будет так: manager = '" . $this->db->escape($product['sku'] В контролере: 'manager' => $product['sku'], в корзине: 'manager' => $product_query->row['sku'],