Jump to content
Sign in to follow this  
alkokoal

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

Recommended Posts

Добрый день. Установила 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

 

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

 

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

 

Share this post


Link to post
Share on other sites

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

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

+-5-10 строк

Share this post


Link to post
Share on other sites

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 . "'");

Share this post


Link to post
Share on other sites

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

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

 

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

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

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

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

Share this post


Link to post
Share on other sites

ни чего не помогло, пришлось переустанавливать.

Share this post


Link to post
Share on other sites

Недавно сам столкнулся с такой ошибкой, все оказалось просто, это ошибка в движке 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:

Share this post


Link to post
Share on other sites

Join the conversation

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

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.