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

[Решено?..] Ошибка при копировании товара

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

Добрый день. Установила vqmod для версии 1.5.5. Добавила пару модулей, (категории и новости). Теперь при копировании товаров в админке выскакивает такая ошибка

 

Warning: Illegal string offset 'layout_id' in /home/g/goloviwp/animeonly.ru/public_html/vqmod/vqcache/vq2-admin_model_catalog_product.php on line 113Warning: Illegal string offset 'layout_id' in /home/g/goloviwp/animeonly.ru/public_html/vqmod/vqcache/vq2-admin_model_catalog_product.php on line 114Warning: Cannot modify header information - headers already sent by (output started at /home/g/goloviwp/animeonly.ru/public_html/admin/index.php:86) in /home/g/goloviwp/animeonly.ru/public_html/vqmod/vqcache/vq2-system_engine_controller.php on line 28Warning: Cannot modify header information - headers already sent by (output started at /home/g/goloviwp/animeonly.ru/public_html/admin/index.php:86) in /home/g/goloviwp/animeonly.ru/public_html/vqmod/vqcache/vq2-system_engine_controller.php on line 29

 

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

 

Очень не хочется эти модули удалять, нравятся мне они. Подскажите какой код нужно поправить, а самое главное как?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

дык, а код показать

/vqmod/vqcache/vq2-admin_model_catalog_product.php on line 113
/vqmod/vqcache/vq2-admin_model_catalog_product.php on line 114
?

+-5-10 строк

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

if (isset($data['product_layout'])) {
foreach ($data['product_layout'] as $store_id => $layout) {
if ($layout['layout_id']) {
$this->db->query("INSERT INTO " . DB_PREFIX . "product_to_layout SET product_id = '" . (int)$product_id . "', store_id = '" . (int)$store_id . "', layout_id = '" . (int)$layout['layout_id'] . "'");
}
}
}

if ($data['keyword']) {
$this->db->query("INSERT INTO " . DB_PREFIX . "url_alias SET query = 'product_id=" . (int)$product_id . "', keyword = '" . $this->db->escape($data['keyword']) . "'");
}

$this->cache->delete('product');


$this->cache->delete('seo_pro');


}

public function 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'] . "', date_modified = NOW() WHERE product_id = '" . (int)$product_id . "'");

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

код - тот же что и в родных файлах (если это именно код из vq2-admin_model_catalog_product.php)

пробуйте модули по очереди удалить + после каждого удаления чистить содержимое папок vqmod/vqcache и system/cache

 

варианты возможные:

1) конфликтует один из модулей (ну, или оба)

2) модули конфликтуют между собой

3) ошибка никуда не пропадет, значит причина не в модулях - вспоминать, что еще делали

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Недавно сам столкнулся с такой ошибкой, все оказалось просто, это ошибка в движке Opencart.
 
Стоит нам взглянуть на функцию getProductLayouts в admin/model/catalog/product.php и как в ней формируется массив, то станет понятно, что индекса 'layout_id' там нет

	public function getProductLayouts($product_id) {
		$product_layout_data = array();
		
		$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_to_layout WHERE product_id = '" . (int)$product_id . "'");
		
		foreach ($query->rows as $result) {
			$product_layout_data[$result['store_id']] = $result['layout_id'];
		}
		
		return $product_layout_data;
	}

а в условии if и запросе он присутствует

		if (isset($data['product_layout'])) {
			foreach ($data['product_layout'] as $store_id => $layout) {
				if ($layout['layout_id']) {
					$this->db->query("INSERT INTO " . DB_PREFIX . "product_to_layout SET product_id = '" . (int)$product_id . "', store_id = '" . (int)$store_id . "', layout_id = '" . (int)$layout['layout_id'] . "'");
				}
			}
		}

то есть нужно его удалить

		if (isset($data['product_layout'])) {
			foreach ($data['product_layout'] as $store_id => $layout) {
				if ($layout) {
					$this->db->query("INSERT INTO " . DB_PREFIX . "product_to_layout SET product_id = '" . (int)$product_id . "', store_id = '" . (int)$store_id . "', layout_id = '" . (int)$layout . "'");
				}
			}
		}

Еще момент на PHP версии 5.3 ошибки не возникает, но на версиях выше она появляется :ugeek:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Вы комментируете как гость. Если у вас есть аккаунт, пожалуйста, войдите
Ответить в этой теме...

×   Вы вставили контент с форматированием.   Удалить форматирование

  Разрешено использовать не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


  • Последние посетители   0 пользователей онлайн

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

×

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

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