首页 > 解决方案 > Opencart 无法在视图中显示从控制器发送的变量

问题描述

我很难让变量显示在 Opencart 的产品页面上。我在 catalog/model/catalog/product.php 文件中添加了一个 SQL 查询,如下所示:

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 } ?>

它返回未定义的变量:/catalog/view/theme/mytheme/template/product/product.tpl 中的 large_items

我现在有点不知所措。有人能通过我的代码看到为什么它无法从控制器中提取变量吗?

我尝试通过将 $large_items = "Hello" 添加到控制器来简化它,以查看是否可以在视图页面上回显它,但它仍然看不到变量。

Opencart 的版本是 2.3.0.2

感谢您的时间。

标签: model-view-controllerviewmodelcontrolleropencart

解决方案


我设法通过做两件事来解决这个问题:

从查询中删除 oc_ 因为前缀已经定义,但是我只有在发现控制器更改没有被拾取而没有清除管理面板中的缓存 > 修改 > 单击蓝色刷新按钮后才能注意到这一点。

然后我能够在 php 日志中看到损坏的查询。

问题是我的伪劣代码,但我希望缓存刷新信息对其他人卡住时有用。

谢谢


推荐阅读