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

Ошибка Array to string conversion in \opencart\catalog\model\tool\image.php


Recommended Posts

Всем привет, пытаюсь вывести дополнительное приложение в view шаблона category, для реализации функционала смены картинки при наведении.

Алгоритм был такой:

В контроллере category.php ->

foreach ($results as $result) {
				//Создаю переменную и беру все изображения от нужного продукта---------------------------------------------------->
				$image_add = $this->model_catalog_product->getProductImages($result['product_id']);
				if ($result['image']) {
					$image = $this->model_tool_image->resize($result['image'], $this->config->get($this->config->get('config_theme') . '_image_product_width'), $this->config->get($this->config->get('config_theme') . '_image_product_height'));
				} else {
					$image = $this->model_tool_image->resize('placeholder.png', $this->config->get($this->config->get('config_theme') . '_image_product_width'), $this->config->get($this->config->get('config_theme') . '_image_product_height'));
				}

				//Добавление доп изображения -------------------------------->
				if ($image_add) {
					$image_add_1 = $this->model_tool_image->resize($image_add[0], $this->config->get($this->config->get('config_theme') . '_image_product_width'), $this->config->get($this->config->get('config_theme') . '_image_product_height'));
				} else {
					$image = $this->model_tool_image->resize('placeholder.png', $this->config->get($this->config->get('config_theme') . '_image_product_width'), $this->config->get($this->config->get('config_theme') . '_image_product_height'));
				}

				if ($this->customer->isLogged() || !$this->config->get('config_customer_price')) {
					$price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']);
				} else {
					$price = false;
				}

$data['products'][] = array(
					'product_id'  => $result['product_id'],
					'thumb'       => $image,
					'thumb_1'     => $image_add_1, ----------------> Приравнял image_add_1 к thumb_1 для вывода в tpl

 

Нашел возможное решение проблемы с этой ошибкой, но никак не могу победить, пишут что такая ошибка, вылезает если на выходе приходит не строка с одним значением, а массив (я так понимаю тот массив $image_add[0] - 1 значение массива с доп изображением. Подскажите, как можно решить данную проблему?

Проблема в 4й строке image.php в tool

Сейчас вместо первой доп. картинки выходит placeholder и ошибка сверху с ошибкой конвертации массива в строку.

<?php
class ModelToolImage extends Model {
	public function resize($filename, $width, $height) {
		if (!is_file(DIR_IMAGE . $filename)) {
			if (is_file(DIR_IMAGE . 'no_image.jpg')) {
				$filename = 'no_image.jpg';
			} elseif (is_file(DIR_IMAGE . 'no_image.png')) {
				$filename = 'no_image.png';
			} else {
				return;
			}
		}

 

Змінено користувачем AleninK
Надіслати
Поділитися на інших сайтах


да, вы массив подставляете как параметр, а нужно строку с путем, т.е.

не $image_add[0]

а 

$image_add[0]['image']

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

if ($image_add) {

if (!empty($image_add[0])) {

$image_add_1 = $this->model_tool_image->resize($image_add[0], $this->config->get($this->config->get('config_theme') . '_image_product_width'), $this->config->get($this->config->get('config_theme') . '_image_product_height'));

 

$image_add_1 = $this->model_tool_image->resize($image_add[0]['image'], $this->config->get($this->config->get('config_theme') . '_image_product_width'), $this->config->get($this->config->get('config_theme') . '_image_product_height'));

 

thumb_1'     => $image_add_1

 

thumb_1'     => isset($image_add_1) ? $image_add_1 : '';

 

и все это не красиво, лучше как-то так

//Добавление доп изображения -------------------------------->
$image_add = $query = $this->db->query("SELECT `image` FROM " . DB_PREFIX . "product_image WHERE product_id = '" . (int)$result['product_id'] . "' ORDER BY sort_order ASC LIMIT 1")->row;

if (!empty($image_add['image'])) {
	$image_add_1 = $this->model_tool_image->resize($image_add['image'], $this->config->get($this->config->get('config_theme') . '_image_product_width'), $this->config->get($this->config->get('config_theme') . '_image_product_height'));
} else {
	$image_add_1 = '';
}
// ...
$data['products'][] = array(
					'product_id'  => $result['product_id'],
					'thumb'       => $image,
					'thumb_1'     => $image_add_1,
// ...

З.Ы. Код не проверял, но должно работать.

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

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

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

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

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

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

Вхід

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

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

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

Important Information

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