编辑订单上的Opencart 2.1.0.2自定义选项消失

时间:2016-07-04 15:21:56

标签: javascript php json opencart opencart2.x

我正在使用Opencart 2.1.0.2。

我开发了一个自定义选项,其中type = number和数量名称反映了复选框代码。这非常有效。 (它从管理中的添加顺序按钮和商店前面正确添加)

但是,我注意到如果我要使用产品编辑订单,首先会在#tab-product页面上显示选项type = number,但是一旦购物车选项加载,它就会消失。 首先:enter image description here 然后它消失了:enter image description here 注意:“Testing2:30”是自定义选项type = text(name is customprice);它看起来很好,并在购物车系统中注册。

修改 我已经发现#button-refresh(在进入此选项卡之前单击)不会正确地重新加载产品选项。我查看了数据库,并且类型正确显示。下面是单击#button-refresh时的代码。有关为什么不重新加载数量选项的任何线索?

// Add all products to the cart using the api
$('#button-refresh').on('click', function() {
$.ajax({
    url: $('select[name=\'store\'] option:selected').val() + 'index.php?route=api/cart/products&token=' + token,
    dataType: 'json',
    crossDomain: true,
    success: function(json) {
        $('.alert-danger, .text-danger').remove();

        // Check for errors
        if (json['error']) {
            if (json['error']['warning']) {
                $('#content > .container-fluid').prepend('<div class="alert alert-danger"><i class="fa fa-exclamation-circle"></i> ' + json['error']['warning'] + ' <button type="button" class="close" data-dismiss="alert">&times;</button></div>');
            }

            if (json['error']['stock']) {
                $('#content > .container-fluid').prepend('<div class="alert alert-danger"><i class="fa fa-exclamation-circle"></i> ' + json['error']['stock'] + '</div>');
            }

            if (json['error']['minimum']) {
                for (i in json['error']['minimum']) {
                    $('#content > .container-fluid').prepend('<div class="alert alert-danger"><i class="fa fa-exclamation-circle"></i> ' + json['error']['minimum'][i] + ' <button type="button" class="close" data-dismiss="alert">&times;</button></div>');
                }
            }
        }

        var shipping = false;

        html = '';

        if (json['products'].length) {
            for (i = 0; i < json['products'].length; i++) {
                product = json['products'][i];

                html += '<tr>';
                html += '  <td class="text-left">' + product['name'] + ' ' + (!product['stock'] ? '<span class="text-danger">***</span>' : '') + '<br />';
                html += '  <input type="hidden" name="product[' + i + '][product_id]" value="' + product['product_id'] + '" />';

                if (product['option']) {
                    for (j = 0; j < product['option'].length; j++) {
                        option = product['option'][j];

                        html += '  - <small>' + option['name'] + ': ' + option['value'] + '</small><br />';

                        if (option['type'] == 'select' || option['type'] == 'radio' || option['type'] == 'image') {
                            html += '<input type="hidden" name="product[' + i + '][option][' + option['product_option_id'] + ']" value="' + option['product_option_value_id'] + '" />';
                        }

                        if (option['type'] == 'checkbox') {
                            html += '<input type="hidden" name="product[' + i + '][option][' + option['product_option_id'] + '][]" value="' + option['product_option_value_id'] + '" />';
                        }


        if (option['type'] == 'quantity' || option['type'] == 'text') {
            html += '<input type="hidden" name="product[' + i + '][option][' + option['product_option_id'] + '][' + option['product_option_value_id'] + ']" value="" />';
        }


        if (option['type'] == 'textarea' || option['type'] == 'customprice' || option['type'] == 'file' || option['type'] == 'date' || option['type'] == 'datetime' || option['type'] == 'time') {

                            html += '<input type="hidden" name="product[' + i + '][option][' + option['product_option_id'] + ']" value="' + option['value'] + '" />';
                        }
                    }
                }

                html += '</td>';
                html += '  <td class="text-left">' + product['model'] + '</td>';

        // html += '  <td class="text-right"><div class="input-group btn-block" style="max-width: 200px;"><input type="text" name="product[' + i + '][quantity]" value="' + product['quantity'] + '" class="form-control" /><span class="input-group-btn"><button type="button" data-toggle="tooltip" title="<?php echo $button_refresh; ?>" data-loading-text="<?php echo $text_loading; ?>" class="btn btn-primary"><i class="fa fa-refresh"></i></button></span></div></td>';

                html += '  <td class="text-right">' + product['price'] + '</td>';
                html += '  <td class="text-right">' + product['total'] + '</td>';
                html += '  <td class="text-center" style="width: 3px;"><button type="button" value="' + product['cart_id'] + '" data-toggle="tooltip" title="<?php echo $button_remove; ?>" data-loading-text="<?php echo $text_loading; ?>" class="btn btn-danger"><i class="fa fa-minus-circle"></i></button></td>';
                html += '</tr>';

                if (product['shipping'] != 0) {
                    shipping = true;
                }
            }
        }

        if (!shipping) {
            $('select[name=\'shipping_method\'] option').removeAttr('selected');
            $('select[name=\'shipping_method\']').prop('disabled', true);
            $('#button-shipping-method').prop('disabled', true);
        } else {
            $('select[name=\'shipping_method\']').prop('disabled', false);
            $('#button-shipping-method').prop('disabled', false);
        }

        if (json['vouchers'].length) {
            for (i in json['vouchers']) {
                voucher = json['vouchers'][i];

                html += '<tr>';
                html += '  <td class="text-left">' + voucher['description'];
                html += '    <input type="hidden" name="voucher[' + i + '][code]" value="' + voucher['code'] + '" />';
                html += '    <input type="hidden" name="voucher[' + i + '][description]" value="' + voucher['description'] + '" />';
                html += '    <input type="hidden" name="voucher[' + i + '][from_name]" value="' + voucher['from_name'] + '" />';
                html += '    <input type="hidden" name="voucher[' + i + '][from_email]" value="' + voucher['from_email'] + '" />';
                html += '    <input type="hidden" name="voucher[' + i + '][to_name]" value="' + voucher['to_name'] + '" />';
                html += '    <input type="hidden" name="voucher[' + i + '][to_email]" value="' + voucher['to_email'] + '" />';
                html += '    <input type="hidden" name="voucher[' + i + '][voucher_theme_id]" value="' + voucher['voucher_theme_id'] + '" />';
                html += '    <input type="hidden" name="voucher[' + i + '][message]" value="' + voucher['message'] + '" />';
                html += '    <input type="hidden" name="voucher[' + i + '][amount]" value="' + voucher['amount'] + '" />';
                html += '  </td>';
                html += '  <td class="text-left"></td>';
                html += '  <td class="text-right">1</td>';
                html += '  <td class="text-right">' + voucher['amount'] + '</td>';
                html += '  <td class="text-right">' + voucher['amount'] + '</td>';
                html += '  <td class="text-center" style="width: 3px;"><button type="button" value="' + voucher['code'] + '" data-toggle="tooltip" title="<?php echo $button_remove; ?>" data-loading-text="<?php echo $text_loading; ?>" class="btn btn-danger"><i class="fa fa-minus-circle"></i></button></td>';
                html += '</tr>';
            }
        }

        if (!json['products'].length && !json['vouchers'].length) {
            html += '<tr>';
            html += '  <td colspan="6" class="text-center"><?php echo $text_no_results; ?></td>';
            html += '</tr>';
        }

        $('#cart').html(html);

        // Totals
        html = '';

        if (json['products'].length) {
            for (i = 0; i < json['products'].length; i++) {
                product = json['products'][i];

                html += '<tr>';
                html += '  <td class="text-left">' + product['name'] + ' ' + (!product['stock'] ? '<span class="text-danger">***</span>' : '') + '<br />';

                if (product['option']) {
                    for (j = 0; j < product['option'].length; j++) {
                        option = product['option'][j];

                        html += '  - <small>' + option['name'] + ': ' + option['value'] + '</small><br />';
                    }
                }

                html += '  </td>';
                html += '  <td class="text-left">' + product['model'] + '</td>';

        // html += '  <td class="text-right">' + product['quantity'] + '</td>';

                html += '  <td class="text-right">' + product['price'] + '</td>';
                html += '  <td class="text-right">' + product['total'] + '</td>';
                html += '</tr>';
            }
        }

        if (json['vouchers'].length) {
            for (i in json['vouchers']) {
                voucher = json['vouchers'][i];

                html += '<tr>';
                html += '  <td class="text-left">' + voucher['description'] + '</td>';
                html += '  <td class="text-left"></td>';
                html += '  <td class="text-right">1</td>';
                html += '  <td class="text-right">' + voucher['amount'] + '</td>';
                html += '  <td class="text-right">' + voucher['amount'] + '</td>';
                html += '</tr>';
            }
        }

        if (json['totals'].length) {
            for (i in json['totals']) {
                total = json['totals'][i];

                html += '<tr>';
                html += '  <td class="text-right" colspan="4">' + total['title'] + ':</td>';
                html += '  <td class="text-right">' + total['text'] + '</td>';
                html += '</tr>';
            }
        }

        if (!json['totals'].length && !json['products'].length && !json['vouchers'].length) {
            html += '<tr>';
            html += '  <td colspan="5" class="text-center"><?php echo $text_no_results; ?></td>';
            html += '</tr>';
        }

        $('#total').html(html);
    },
    error: function(xhr, ajaxOptions, thrownError) {
        alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
    }
});
});

0 个答案:

没有答案