【问题标题】:Opencart: Query the database to get tax_rate dataOpencart:查询数据库获取tax_rate数据
【发布时间】:2013-05-17 00:53:07
【问题描述】:

我正在尝试在产品管理页面中获取计算器助手,靠近价格输入我想添加一个文本框,帮助用户计算不含增值税的价格插入。 这与PLUGIN 类似,但我需要查询数据库以获取所有税率的数组,并将它们与用户选择的tax_class_id 进行比较。

我在这个页面发现了一个请求:admin/controller/localisation/tax_rate.php

if (isset($this->request->post['rate'])) {
    $this->data['rate'] = $this->request->post['rate'];
} elseif (!empty($tax_rate_info)) {
    $this->data['rate'] = $tax_rate_info['rate'];
} else {
    $this->data['rate'] = '';
}

但我不知道如何查询数据库并获取页面admin/view/template/catalog/product_form.tpl内的数据。 我正在尝试获得类似于 Prestashop 的价格管理的结果。

请给我一些帮助!

编辑:

我用 admin/controller/catalog/product.php 中添加的代码解决了这个问题,放在 getForm() 函数中:

$sql = 'SELECT tra.rate, tra.type, tru.tax_class_id FROM '.DB_PREFIX.'tax_rate tra LEFT JOIN '.DB_PREFIX.'tax_rule tru ON tru.tax_rate_id = tra.tax_rate_id WHERE tru.tax_class_id IS NOT NULL' ;
$query = $this->db->query($sql);
$rates = array();
foreach($query->rows as $result){
    $rates[] = $result;
}
$this->data['rates'] = $rates;

感谢所有参与者

【问题讨论】:

    标签: opencart


    【解决方案1】:

    要获取费率列表,请使用以下代码:

    // get tax rates
    $sql = 'SELECT * FROM '.DB_PREFIX.'tax_rate ';
    $query = $this->db->query($sql);
    $rates = array();
    foreach($query->rows as $result){
        $rates[] = $result;
    }
    

    输出:

    Array
    (
    [0] => Array
        (
            [tax_rate_id] => 86
            [geo_zone_id] => 3
            [name] => VAT (17.5%)
            [rate] => 17.5000
            [type] => P
            [date_added] => 2011-03-09 21:17:10
            [date_modified] => 2011-09-22 22:24:29
        )
    
    [1] => Array
        (
            [tax_rate_id] => 87
            [geo_zone_id] => 3
            [name] => Eco Tax (-2.00)
            [rate] => 2.0000
            [type] => F
            [date_added] => 2011-09-21 21:49:23
            [date_modified] => 2011-09-23 00:40:19
        )
    
    )
    

    编辑: 上面的代码进入控制器。要将数据传递给模板,请使用以下内容:

    $this->data['rates'] = $rates;
    

    然后可以通过$rates 访问这些数据。 很抱歉没有从一开始就澄清这一点。换句话说,$this->data 保存视图的所有变量:$this->data['foo'] 在模板文件(视图)中变为 $foo

    【讨论】:

    • 这很清楚,但我只是在学习 opencart MVC 结构,我错过了在 .tpl 文件中获取此 $rates[] 的方法。我必须在控制器/目录/product.php 中使用您的代码吗?在模型中?还是直接在视图中?
    【解决方案2】:

    我还为 OpenCart 开发了一个 price including VAT 扩展,因此我可以就如何继续向您提供一些建议:

    1. 使用jQuery处理
      • Tax Class 选择框的change 事件
      • Price / Price Helper 输入keyup 事件(或任何你想要的)
      • 通过查询数据库(在由 AJAX 请求调用的控制器操作中)使用类似代码
        SELECT * FROM '.DB_PREFIX.'tax_rate tra LEFT JOIN '.DB_PREFIX.'tax_rule tru ON tru.tax_rate_id = tra.tax_rate_id WHERE tru.tax_class_id = ' . (int)$this->request->get['tax_class_id']
        其中 tax_class_id 索引是从 AJAX 调用的 GET 中检索到的
    2. 现在您有了tax_rate,您可以计算价格(我是双向计算的,即使是一个人输入不含增值税的价格,也可以计算含增值税的价格,反之亦然...)

    很抱歉,我不能给你具体的代码,但如果我这样做了,我可以直接转到 OpenCart 扩展并删除我的价格,包括增值税扩展;-)

    【讨论】:

    • 谢谢!我认为不需要 ajax 调用,我想从 tax_rate 和 tax_class 表中查询所有数据,然后在本地处理结果。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-11
    • 2018-07-31
    • 2014-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多