[英]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.