php - 选择送货方式后如何更改/更新运费

标签 php zend-framework magento observer-pattern magento-1.6

我正在尝试按照本 blog 中的说明为 magento 1.7.x.x 创建自定义(pickship)运输方式创建运输模块后。我希望能够根据用户选择的运输选项更改运输成本。

准备:

1.) 为自定义(pickship)运输方式创建了一个表单 block
2.) 使用三个值创建商店名称(可以是任何文本)下拉/选择元素:store1、store2、store3。
3.) 默认运费通过运费配置设置为 1.00 美元(仅用于测试目的)。

当前状态:

1.) 完成所需流程后,当我在单页结帐中选择送货方式时,我看到一个包含三个选项的选择元素,运费设置为默认价格。

目标:

如果用户选择第一个选项,我希望运费更新为 $10.00,如果用户选择第二个选项,则运费更新为 $20.00。

我的尝试:

经过几个小时的谷歌搜索,我对观察者模型做了一些修改:

NameSpace_ModuleName_Model_Observer extends Varien_Object {

public function saveShippingMethod($observer) {

   $request = $evt->getRequest();
   $quote = $evt->getQuote();
   $pickship = $request->getParam('shipping_pickship', false);
   $rates = $quote->getShippingAddress()->getShippingRatesCollection();
   $rate = $rates->getFirstItem();
   if($pickship['select_element'] == 1) {
     $rate->setPrice(10);
   } elseif($pickship['select_element'] == 2) {
     $rate->setPrice(20);
   }
   //Mage::log($rate->getPrice());

}

问题:

我是否使用了正确的观察者/方法来完成这项任务?它只对一步有效——一旦我点击“继续”下订单,它就会重置为默认价格。我设置交货价格的方式可能是错误的。你能让我走上正轨或提出解决方案吗?

最佳答案

如果您想编写您量身定制的解决方案,您可以在这里找到一个很好的教程:Custom shipping method in Magento

基本上您不应该使用观察者,而应该在您的模块中定义一个具有两种运输方式的自定义承运人。

在您的模型中,使用函数 getAllowedMethods() 声明您的送货方式,然后在函数 collectRates() 中给出每种送货方式的费率。

关于php - 选择送货方式后如何更改/更新运费,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11830971/

相关文章:

zend-framework - Zend Form addFilter StripTags 不剥离标签

php - 到底什么是框架?类似于 PHP 的 Zend 框架

php - Magento 中仍在使用数据库布局更新吗?

layout - 在 Magento 之外加载 Magento 子 html

php - Zend Framework - 在重定向时将变量从一个 Controller 传递到另一个 Controller

php - PHP中如何显示每一行的数字

php - array_map 二维数组到一维关联数组

php - PHP使用Redis存储Session需要多少个socket?

php - Magento 更改产品页面标题以包含属性

php - 在 WooCommerce 订阅中获取用户 ID