【问题标题】:Opencart unable to display variable sent from controller in viewOpencart 无法在视图中显示从控制器发送的变量
【发布时间】:2019-05-07 00:59:50
【问题描述】:

我很难让变量显示在 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;
}

然后我将以下内容添加到目录/控制器/产品/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-controller view model controller opencart


    【解决方案1】:

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

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

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

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

    谢谢

    【讨论】:

      【解决方案2】:

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

      接下来,您没有在控制器中正确定义 $large_items。一定是: $data['large_items'] = $this-&gt;model_catalog_product-&gt;getLargeItems($product_id); 然后你可以在你的 .tpl 上得到它,比如 $large_items 或在 .twig {{ large_items }}

      在 twig 中你的代码应该是:

      {% if large_items %}
      
      <h1>Tree</h1>
      
      {% endif %}
      

      祝你好运

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-11
        • 2019-02-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多