我对Magento很新,并且在尝试以编程方式设置自定义送货方式时遇到问题。我正在将一个xml从第三方转换成一个订单,其他一切(我到目前为止工作过)工作正常。此外,我在“以编程方式”拼写时遇到问题,但我不会要求你提供帮助。
我设置了自定义送货方式,如下所示: 要激活运输模块 应用程序的/ etc /模块/ Extension_Shipping.xml
<?xml version=
"1.0"?>
<config>
<modules>
<Extension_Shipping>
<active>true</active>
<codePool>local</codePool>
<depends>
<Mage_Shipping/>
</depends>
</Extension_Shipping>
</modules>
</config>
然后配置它 应用程序/代码/本地/扩展/运输的/ etc / config.xml中
<?xml version=
"1.0" ?>
<config>
<modules>
<Extension_Shipping>
<version>0.1.0</version>
</Extension_Shipping>
</modules>
<global>
<models>
<extension_shipping>
<class>Extension_Shipping_Model</class>
</extension_shipping>
</models>
</global>
<default>
<carriers>
<extension_myrate>
<active>1</active>
<model>extension_shipping/carrier_myrate</model>
<title>Extension Shipping</title>
<name>Default Rate</name>
</extension_myrate>
</carriers>
</default>
</config>
然后添加类 应用程序/代码/本地/扩展/运输/型号/运营商/ MyRate.php
<?php
class Extension_Shipping_Model_Carrier_MyRate
extends Mage_Shipping_Model_Carrier_Abstract
implements Mage_Shipping_Model_Carrier_Interface
{
protected $_code = 'extension_myrate';
protected $_isFixed = true;
public function collectRates(Mage_Shipping_Model_Rate_Request
$request)
{
if (!$this->getConfigFlag('active')) {
return false;
}
$result = Mage::getModel('shipping/rate_result');
$method = Mage::getModel('shipping/rate_result_method');
$method->setCarrier('extension_myrate');
$method->setCarrierTitle($this->getConfigData('title'));
$method->setMethod('extension_myrate');
$method->setMethodTitle($this->getConfigData('name'));
$method->setPrice(5);
$method->setCost(2);
$result->append($method);
return $result;
}
public function getAllowedMethods()
{
return array('extension_myrate' => $this->getConfigData('name'));
}
}
基本上我跟着http://www.magentotricks.com/creating-a-customer-magento-shipping-method/
我认为这一切都运行正常,因为运送方法现在显示在结帐屏幕中,并且可以由客户或管理员“创建新订单”设置。但是,我无法以编程方式设置它。
在我的控制器中,我正在尝试使用代码
设置送货方式$shippingAddress = $quote->getShippingAddress()->addData($addressData);
$shippingAddress->setCollectShippingRates(true)->collectShippingRates()
->setShippingMethod('extension_myrate')
->setPaymentMethod('checkmo');
为了增加我的困惑,它曾经工作过一次。但是只有一次测试订单。将“setShippingMethod”更改为“freeshipping_freeshipping”或“flatrate_flatrate”会使其正确更新运费。因为这个,因为我是新手,但仍然遇到文件结构问题,我猜我的问题是setShippingMethod('extension_myrate')
,但我不完全确定。任何建议都会有所帮助和赞赏。