model-view-controller - 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
感谢您的时间。
解决方案
我设法通过做两件事来解决这个问题:
从查询中删除 oc_ 因为前缀已经定义,但是我只有在发现控制器更改没有被拾取而没有清除管理面板中的缓存 > 修改 > 单击蓝色刷新按钮后才能注意到这一点。
然后我能够在 php 日志中看到损坏的查询。
问题是我的伪劣代码,但我希望缓存刷新信息对其他人卡住时有用。
谢谢
推荐阅读
- fusioncharts - Fusion图表的动态输入
- ajax - 使用 R 抓取具有 Ajax 表的网站
- java - 每天推送通知
- javascript - 使用传单未显示正确样式的 Choropleth 地图
- jenkins - Jenkins突然无法识别批处理文件
- selenium-webdriver - 拖放无法使用本机方法正常工作
- javascript - PDF 或 DOC 文件的 IONIC 3 filePath(本机路径)问题
- java - 如何在 java 中读取 docker-compose.yml 文件
- arrays - 如何将csv中的特定元素存储到变量中?
- swift - 我的完成处理程序总是返回一个空数组,为什么?