Opencart не может отобразить переменную, отправленную из контроллера в поле зрения - PullRequest
0 голосов
/ 05 декабря 2018

У меня проблемы с отображением переменной на странице продукта в Opencart.Я добавил SQL-запрос в файл catalog / model / catalog / product.php, как показано ниже:

public function getLargeItems($product_id) {
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "oc_product_attribute WHERE product_id = '" . (int)$product_id . "' AND attribute_id=17  AND (text LIKE '10lt' OR text LIKE '30lt' OR text LIKE '50lt')");

    return $query->row;
}

Затем я добавил следующее в файл catalog / controller / product / product.php:

$large_items = $this->model_catalog_product->getLargeItems($product_id);

Наконец, я добавил следующее на страницу /catalog/view/theme/mytheme/template/product/product.tpl:

<?php if ($large_items) { ?>

<h1>Tree</h1>

<?php } ?>

И он возвращает неопределенную переменную: large_items в / catalog/view/theme/mytheme/template/product/product.tpl

Сейчас я немного растерялся.Кто-нибудь может увидеть по моему коду, почему он не может извлечь переменную из контроллера?

Я попытался упростить его, добавив $ large_items = "Hello" к контроллеру, чтобы посмотреть, могу ли я повторить это настраница просмотра, однако она все еще не может видеть переменную.

Версия Opencart - 2.3.0.2

Спасибо за ваше время.

Ответы [ 2 ]

0 голосов
/ 06 декабря 2018

Сначала вы должны удалить oc_ из "oc_product_attribute WHERE product_id =..., потому что префикс уже определен как " . DB_PREFIX . ".

Затем вы неправильно определили $large_items в вашем контроллере.должно быть: $data['large_items'] = $this->model_catalog_product->getLargeItems($product_id); тогда вы можете получить его в своем .tpl, как $large_items или в .twig {{large_items}}

в ветке ваш код должен быть:

{% if large_items %}

<h1>Tree</h1>

{% endif %}

Удачи

0 голосов
/ 05 декабря 2018

Мне удалось решить эту проблему, выполнив две вещи:

Удаление oc_ из запроса, так как префикс уже определен, однако я смог заметить это только после того, как обнаружил, что изменения контроллера не были получены без очисткикэш в админ-панели> изменения> нажмите синюю кнопку обновления.

После этого я смог увидеть неработающий запрос в журналах php.

Проблема заключалась в моем некачественном коде, но янадеюсь, что информация об обновлении кэша будет полезна другим, если они застрянут.

Спасибо

...