Запрос OpenCart SQL и отображение на странице шаблона продукта

0

Я пытаюсь получить доступ к идентификатору таблицы для отображения на странице продукта на OpenCart 2.0.3.1.

Я пытаюсь получить доступ к идентификатору из таблицы, а затем привести его на страницу продукта и отобразить его в вариантах варианта в раскрывающемся списке.

Я запускаю SQL для одного продукта и получаю идентификатор 21. Поэтому для причин отладки я добавляю две переменные (product_id и option_id) вручную, чтобы эти проблемы вызывали проблему. Ниже приведен скриншот запроса sql-запроса

Изображение 174551

Таким образом, он возвращается с номером 21. Очевидно, когда я изменяю sql как product_id и option_id для каждого продукта, он вернет соответствующий идентификатор.

У меня есть эта настройка:

Каталог/модель/каталог /product.php

public function getOtpOptionId($product_id)
{
    $otp_option_query = $this->db->query("SELECT id from oc_otp_option_value where product_id = 62 AND parent_option_value_id = 20");
    $otp_option = $otp_option_query->row;
    return $otp_option;
}

каталог/контроллер/продукта /product.php

ниже

foreach ($option['product_option_value'] as $option_value) {

я добавить

$data['otp_option_id'] = $this->model_catalog_product->getOtpOptionId($this->request->get['product_id']);

Каталог/тема/*/шаблон/продукта /product.tpl

Я меняю:

<option value="<?php echo $option_value['option_value_id']; ?>"><?php echo $option_value['name']; ?></option>

быть

<option value="<?php echo $option_value['option_value_id']; ?>"><?php echo $option_value['name']; ?> (<?php echo $data['otp_option_id']; ?>)</option>

Я ожидаю, что он покажет все варианты в раскрывающемся списке с (21)

например:
красный (21)
синий (21)
Зеленый (21)

Он просто показывает каждый вариант без номера и только().

Что я делаю неправильно?

заранее спасибо

/******* ОБНОВИТЬ *******/

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

    public function getOtpOptionId($product_id, $option_value_id)
{
    $otp_option_query = $this->db->query("SELECT id from oc_otp_option_value where product_id = '" . (int)$product_id . "' AND parent_option_value_id = '" . (int)$option_value_id . "'");
    $otp_option = $otp_option_query->row;
    return $otp_option;
}
Теги:
opencart
opencart2.x

1 ответ

1

Если вы не хотите использовать этот код внутри цикла foreach позже:

$data['otp_option_id'] = $this->model_catalog_product->getOtpOptionId($this->request->get['product_id']);

вы не должны помещать его в цикл, вы можете поместить его после этого кода, который находится вне цикла:

$data['options'] = array();

И в вашем файле просмотра вместо:

<option value="<?php echo $option_value['option_value_id']; ?>"><?php echo $option_value['name']; ?> (<?php echo $data['otp_option_id']; ?>)</option>

Использование:

<option value="<?php echo $option_value['option_value_id']; ?>"><?php echo $option_value['name']; ?> (<?php echo $otp_option_id; ?>)</option>
  • 0
    Спасибо за это. Это работает! @DigitCart. однако мне нужно это в цикле, так как он будет иметь разные product_id для каждого продукта. Я могу сделать это?
  • 0
    Вы можете увидеть код, который я изменил выше под / * ОБНОВЛЕНИЕ * / спасибо
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню