Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Исправление редактирования товара


Recommended Posts

Возникла такая проблема:

В таблицу oc_products добавлена новая строка с айдишником. 

При редактировании какого-либо товара через админку этот айдишник естественно не учитывается и по умолчанию ставится 0.

 

Как исправить это недоразумение? Нужно что-бы при редактировании товара он подхватывал этот айдишник из базы, но  на практике это реализовать оказалось не так то просто.

 

Первое что пришло в голову лезть в model/catalog/product.php

и найти там функцию editProduct($product_id, $data)

 

Добавил новый айдишник сюда:

 

 

 

$this->db->query("UPDATE " . DB_PREFIX . "product SET model = '" . $this->db->escape($data['model']) . "', sku = '" . $this->db->escape($data['sku']) . "', upc = '" . $this->db->escape($data['upc']) . "', ean = '" . $this->db->escape($data['ean']) . "', jan = '" . $this->db->escape($data['jan']) . "', isbn = '" . $this->db->escape($data['isbn']) . "', mpn = '" . $this->db->escape($data['mpn']) . "', location = '" . $this->db->escape($data['location']) . "', quantity = '" . (int)$data['quantity'] . "', minimum = '" . (int)$data['minimum'] . "', subtract = '" . (int)$data['subtract'] . "', stock_status_id = '" . (int)$data['stock_status_id'] . "', date_available = '" . $this->db->escape($data['date_available']) . "', manufacturer_id = '" . (int)$data['manufacturer_id'] . "', shipping = '" . (int)$data['shipping'] . "', price = '" . (float)$data['price'] . "', points = '" . (int)$data['points'] . "', weight = '" . (float)$data['weight'] . "', weight_class_id = '" . (int)$data['weight_class_id'] . "', length = '" . (float)$data['length'] . "', width = '" . (float)$data['width'] . "', height = '" . (float)$data['height'] . "', length_class_id = '" . (int)$data['length_class_id'] . "', status = '" . (int)$data['status'] . "', tax_class_id = '" . $this->db->escape($data['tax_class_id']) . "', sort_order = '" . (int)$data['sort_order'] . "', merlion_id = '" . (int)$data['merlion_id'] . "', date_modified = NOW() WHERE product_id = '" . (int)$product_id . "'");

 

Затем сюда:

controller/module/product.php

 

Нашел функцию getForm и добавил это:

 

 

if (isset($this->request->post['merlion_id'])) {
$this->data['merlion_id'] = $this->request->post['merlion_id'];
} elseif (!empty($product_info)) {
$this->data['merlion_id'] = $product_info['merlion_id'];
} else {
$this->data['merlion_id'] = '';
}

 

 

Так же и в функции getList():

 

Добавил:

 

$this->data['products'][] = array(
'product_id' => $result['product_id'],
'merlion_id' => $result['merlion_id'],
'name' => $result['name'],
'model' => $result['model'],
'price' => $result['price'],
'special' => $special,
'image' => $image,
'quantity' => $result['quantity'],
'status' => ($result['status'] ? $this->language->get('text_enabled') : $this->language->get('text_disabled')),
'selected' => isset($this->request->post['selected']) && in_array($result['product_id'], $this->request->post['selected']),
'action' => $action
);

 

Но оно все равно не фурычит. Ставит 0, как будто из базы не берет. Подскажите, что пропустил, не могу придумать ничего.

Надіслати
Поділитися на інших сайтах


Навскидку, еще нет чтения из БД этого поля (поправить запрос SELECT)

Надіслати
Поділитися на інших сайтах

Выдает вот что:

 

 

Notice: Undefined index: merlion_id in /...../public_html/vqmod/vqcache/vq2-admin_model_catalog_product.php on line 126Notice: Error: Duplicate entry '0' for key 'merlion_id'
Error No: 1062
UPDATE oc_product SET model = 'DADF-P2', sku = '', upc = '', ean = '', jan = '', isbn = '', mpn = '', location = '', quantity = '1', minimum = '1', subtract = '1', stock_status_id = '6', date_available = '-0001-11-30', manufacturer_id = '16', shipping = '1', price = '0', points = '0', weight = '10.5', weight_class_id = '1', length = '0', width = '0', height = '0', length_class_id = '1', status = '1', tax_class_id = '0', sort_order = '1', merlion_id = '0', date_modified = NOW() WHERE product_id = '22351' in /.../public_html/system/database/ipsmysql.php on line 53

 

 

Навскидку, еще нет чтения из БД этого поля (поправить запрос SELECT)

 

Только где его искать?

Надіслати
Поділитися на інших сайтах


Проблема решилась. Оказалось что при редактировании оно берет данные не из базы а из формы. Соответственно нужно было сделать input и тогда оно будет подцеплять значение оттуда.

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.