Я пытаюсь получить доступ к идентификатору таблицы для отображения на странице продукта на OpenCart 2.0.3.1.
Я пытаюсь получить доступ к идентификатору из таблицы, а затем привести его на страницу продукта и отобразить его в вариантах варианта в раскрывающемся списке.
Я запускаю SQL для одного продукта и получаю идентификатор 21. Поэтому для причин отладки я добавляю две переменные (product_id и option_id) вручную, чтобы эти проблемы вызывали проблему. Ниже приведен скриншот запроса sql-запроса
Таким образом, он возвращается с номером 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;
}
Если вы не хотите использовать этот код внутри цикла 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>