Неопределенный индекс: изображение в order.php on line 346

Тема в разделе "Ошибки и их решения", создана пользователем hnbh, 24 мар 2023.

  1. hnbh

    hnbh Пользователь

    Сообщения:
    41
    Симпатии:
    0
    Добрый день.
    Подскажите, как добавить правило в php для устранения ошибки:
    Notice: Undefined index: image in /system/storage/modification/catalog/controller/account/order.php on line 346

    Знаю, что данная ошибка возникает из-за не корректной ссылки на изображение после изменения или удаления товара.

    Думал поможет способ с заменой изображения, поэтому для сайта в order_info.tpl изменил код.

    <?php if ($product['image']) { ?>
    <a href="<?php echo $product['href']; ?>" target="_blank"><img src="<?php echo $product['thumb']; ?>" alt="<?php echo $product['name']; ?>" title="<?php echo $product['name']; ?>" class="img-thumbnail" />
    </a>
    <?php } else { ?>
    <span class="img-thumbnail list"><i class="fa fa-camera fa-2x"></i></span>
    <?php } ?>
     
  2. Ravilr

    Ravilr Специалист

    Сообщения:
    3.878
    Симпатии:
    1.064
    Наверно нет такого правила. Чтобы решить проблему, нужно понять откуда она... особенно что там модификаторы наделали и потом уже что то делать.
     
  3. hnbh

    hnbh Пользователь

    Сообщения:
    41
    Симпатии:
    0
    В модификаторе ничего не менял. Вы можете посмотреть?
     
    Последнее редактирование: 24 мар 2023
  4. Ravilr

    Ravilr Специалист

    Сообщения:
    3.878
    Симпатии:
    1.064
    Тут не смотреть, а нормально изучать.. проверять итд. Не на 5 минуток работы.
     
  5. Blast

    Blast Продвинутый пользователь

    Сообщения:
    212
    Симпатии:
    74
    <?php if ($product['image']) { ?>
    замените на
    <?php if (!empty($product['image'])) { ?>
    НО! это просто устраняет последствия, а не решение проблемы. как вам уже написали, нужно смотреть откуда что передается и что наделали модификаторы
     
  6. Ravilr

    Ravilr Специалист

    Сообщения:
    3.878
    Симпатии:
    1.064
    Тут надо прямо красными буквами писать :( Иначе многие делаю правки в кеше и забивают. А кто то приходит поправить одну строчку (например я) и обновляет кеш. В итоге все ломается и заказчик с пеной у рта, кричит и топает и говорит что "все сломали, собаки, давайте делайте исправляйте итд..."
     
    Blast нравится это.
  7. Blast

    Blast Продвинутый пользователь

    Сообщения:
    212
    Симпатии:
    74
    я обычно перед правками незнакомых сайтов делаю еще и бэкап кэша модификаторов. в случае подобных "разработчиков" можно просто вернуть файлы на место
     
    Ravilr нравится это.
  8. hnbh

    hnbh Пользователь

    Сообщения:
    41
    Симпатии:
    0
    Объясню. На сайте ранее был товар который купили только раз. Данный товар отображался в ордере лк покупателя корректно. Но больше этот товар не покупали, я решил удалить карточку товара. После этого в ордере клиента появилась данная ошибка. Пытаюсь устранить.
    В файле в order_info.tpl изменил код.

    <?php if ($product['image']) { ?>
    <a href="<?php echo $product['href']; ?>" target="_blank"><img src="<?php echo $product['image']; ?>" alt="<?php echo $product['name']; ?>" title="<?php echo $product['name']; ?>" class="img-thumbnail" />
    </a>
    <?php } else { ?>
    <span class="img-thumbnail list"><i class="fa fa-camera fa-2x"></i></span>
    <?php } ?>

    Ошибку убрать удалось, но теперь не подгружает (не отображается) картинки других товаров.

    Убрал ошибку таким способом, в контроллере order.php:

    $this->load->model('tool/image');
    $product_qimage = $this->db->query("SELECT image FROM " . DB_PREFIX . "product WHERE product_id = '" . (int)$product['product_id'] . "'");
    // $product_image = $product_qimage->row['image']; - закомментировал

    if (is_file(DIR_IMAGE . $product['image'])) {
    $image = $this->model_tool_image->resize($product['image'], 50, 50);
    } else {
    $image = $this->model_tool_image->resize('no_image.png', 50, 50);
    }


    $data['products'][] = array(
    'image' => $product['image'], // для фото
    'href' => $this->url->link('product/product', 'product_id=' . $product['product_id']),
    //'thumb' => $this->model_tool_image->resize($product_image, 50, 50), - закомментировал
    'name' => $product['name'],
    'model' => $product['model'],
    'option' => $option_data,
    'quantity' => $product['quantity'],
    'price' => $this->currency->format($product['price'] + ($this->config->get('config_tax') ? $product['tax'] : 0), $order_info['currency_code'], $order_info['currency_value']),
    'total' => $this->currency->format($product['total'] + ($this->config->get('config_tax') ? ($product['tax'] * $product['quantity']) : 0), $order_info['currency_code'], $order_info['currency_value']),
    'reorder' => $reorder,
    'return' => $this->url->link('order_id=' . $order_info['order_id'] . '&product_id=' . $product['product_id'], true)
    );

    После изменений обновляю модификатор и кеш

    Screenshot_1.jpg
     
    Последнее редактирование: 24 мар 2023
  9. Blast

    Blast Продвинутый пользователь

    Сообщения:
    212
    Симпатии:
    74
    Код:
    if ($product_qimage->num_rows) {
        $product_image = $product_qimage->row['image'];
    } else {
        $product_image = false;
    }
    Код:
    'thumb' => $product_image ? $this->model_tool_image->resize($product_image, 50, 50) : '',
    ну и как-то по аналогии и другие переменные. у вас почему-то 2 картинки из разных переменных используются. формируется ссылка на товар, хотя он удалён и т.д.
     
  10. hnbh

    hnbh Пользователь

    Сообщения:
    41
    Симпатии:
    0
    Огромное спасибо, данный способ подходит и работает отлично.