繁体   English   中英

magento:在admin中为新客户创建订单,装满jquery的收货地址未用新值刷新POST

[英]magento: create order for new customer in admin, shipping address filled with jquery not refreshing POST with new values

我创建了商店提货模块,一切都在前面,后面有问题。

在管理员中创建订单时,我在所有商店中添加了下拉菜单。 因此,当您在运送地址中选择一个商店字段中填充了数据时,我正在使用jQuery

$rdj.getJSON('<?php echo Mage::getUrl('ustorelocator/location/storeDetailsAjax'); ?>', function(jd) {
                $rdj.each(jd, function(i, value) {
                    //var storeArray = [];
                    $rdj('.rd_stores').append($rdj('<option>').text(value.title + ' (' + value.notes_delivery + ')').attr('value', i));
                });

                $rdj('.rd_stores').on('change', function() {
                    var v = this.value;
                    var fname = $rdj('input[name="order[billing_address][firstname]"]').val();
                    var lname = $rdj('input[name="order[billing_address][lastname]"]').val();
                    $rdj('input[name="order[shipping_address][firstname]"]').val(fname);
                    $rdj('input[name="order[shipping_address][lastname]"]').val(lname);
                    $rdj('input[name="order[shipping_address][telephone]"]').val(jd[v].phone);
                    $rdj('input[name="order[shipping_address][postcode]"]').val(jd[v].postcode);
                    $rdj('input[name="order[shipping_address][company]"]').val('ROBERT DYAS - ' + jd[v].title + ' ('+ jd[v].store_id + ')');
                    $rdj('input[name="order[shipping_address][street][0]"]').val(jd[v].street);
                    $rdj('input[name="order[shipping_address][street][1]"]').val('');
                    $rdj('input[name="order[shipping_address][city]"]').val(jd[v].city);
                    $rdj('input[name="rd_notes_delivery"]').val(jd[v].notes_delivery);
                    $rdj('input[name="rd_store_email"]').val(jd[v].store_email);
                    $rdj('input[name="rd_opening_hours"]').val(jd[v].notes);
                });
            });

我正在使用$ rdj来避免冲突。 如您所见,我正在使用模块创建json并在此处使用它填充下拉列表,然后根据所选商店的值,我在送货地址字段中填充了数据。

问题在于,执行此操作后,表单数据(后续操作)未更新,因此我无法获得送货方式!

我该如何刷新呢? 我注意到,如果单击与帐单地址更新相同,则触发此操作:shipping_method,billing_method,shipping_address,总计,giftmessage?isAjax = true

解:

好的,所以我将此功能添加到js / mage / sales.js

selectStore: function() {
    var data = this.serializeData(this.shippingAddressContainer);
    data = data.toObject();
    this.loadArea(['shipping_method', 'billing_method', 'shipping_address', 'totals', 'giftmessage'], true, data);
}

并转到我的jQuery,我在其中跟踪下拉菜单中的更改:

order.storeSelect();

最后,在我填写了所有送货地址字段之后。

这是可行的,现在已设置表格数据并显示了运送方式。

有什么方法可以从sales.js中定义此额外功能吗? 因为此js是核心js文件的一部分?

我不是prototype.js专家

更新好的,我终于确定了为什么Magento使用Prototype,因为覆盖与Zend框架相同。 因此,要将方法添加到Mage js文件中,您需要执行以下操作:

在js / your_name_folder / your_file.js中创建您的js文件,因为如果您去那里并检查页面顶部,我需要将方法添加到sales.js中,则将看到以下内容:var AdminOrder = new Class.create(); AdminOrder.prototype = {

因此,在your_file.js中,您需要将您的方法添加到AdminOrder类(在本例中为AdminOrder)中,您可以像这样进行操作:

AdminOrder.addMethods({
    selectStore: function() {
        var data = this.serializeData(this.shippingAddressContainer);
        data = data.toObject();
        this.loadArea(['shipping_method', 'billing_method', 'shipping_address', 'totals', 'giftmessage'], true, data);
    }

});

然后您转到design / adminhtml / default / your_theme / layout / local.xml,就我而言,我需要将js文件添加到adminhtml_sales_order_create_index中。 希望这对某人有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM