Перейти к содержанию
C0DENAMED

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

Рекомендуемые сообщения

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

В таблицу 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 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.