Opencart无法在视图中显示从控制器发送的变量

时间:2018-12-05 12:42:31

标签: model-view-controller view model controller opencart

我很难在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 } ?>

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

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

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

Opencart的版本为2.3.0.2

谢谢您的时间。

2 个答案:

答案 0 :(得分:0)

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

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

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

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

谢谢

答案 1 :(得分:0)

首先,您必须从oc_中删除"oc_product_attribute WHERE product_id =...,因为前缀已经定义为" . DB_PREFIX . "

接下来,您没有在控制器中正确定义$large_items。一定是: $data['large_items'] = $this->model_catalog_product->getLargeItems($product_id); 那么您可以在{.1}之类的.tpl或.twig {{large_items}}

中获取它。

在树枝中,您的代码应为:

$large_items

祝你好运