magento运输

时间:2010-11-04 04:39:55

标签: php magento

我最近借助Magento开发人员指南在Magento 1.3.2中创建了一个新的运输模块。我的模块工作正常,但是在管理区域内创建货件时,我似乎无法工作如何使其成为运营商下方列表中的一部分。

一旦我在这个下拉列表中拥有我的运营商,我将需要应用其他功能,这样如果在下达装运订单时选择了我的运营商,那么它会完成大量工作。

所以我需要解决的问题是:

  1. 如何在下拉列表中将我的货件选项作为承运人
  2. 我必须扩展哪些类才能添加功能,还是只需将其添加到我的货件模型中?

2 个答案:

答案 0 :(得分:3)

我发现了这个问题。

整体问题是我没有设置方法isTrackingAvailable()(在我的运输模型中)返回true。

对于任何想知道如何解决这个问题的人。

我查看了与发货相关的所有模板文件。找到文件后,我找到了创建下拉列表的位置:

 <?php foreach ($this->getCarriers() as $_code=>$_name): ?>
                    <option value="<?php echo $_code ?>"><?php echo $_name; ?></option>
                    <?php endforeach; ?>

在看到使用$ this调用之后。我做了一个echo get_class($ this)来找到调用它的类名,即Mage_Adminhtml_Block_Sales_Order_Shipment_Create_Tracking。

在那里我找到了getCarriers()函数。

在那里,它通过创建一个名为Mage_Shipping_Model_Config的对象来收集所有载体。

$carrierInstances = Mage::getSingleton('shipping/config')->getAllCarriers(
            $this->getShipment()->getStoreId()
);

并调用其函数getAllCarriers()。

在此函数中,它返回db。中core_config_data表中的所有载体。

因此跳回到getCarriers()函数..我们现在拥有所有的运营商。再往下一点,我可以看到有一个IF语句,询问运营商是否有函数isTrackingAvailable()在返回运营商之前返回true。

    foreach ($carrierInstances as $code => $carrier) {
        if ($carrier->isTrackingAvailable()) {
            $carriers[$code] = $carrier->getConfigData('title');
        }
    }

如果有人有任何问题,请给我发电子邮件。 mark@mbwebstudios.com(请注意,我仍在学习自己,但我会尽我所能回答任何问题)

答案 1 :(得分:0)

您是否在app/code/local/yournamespace/yourmodule/Blocks/Adminhtml下添加了必要的块以及app/design/adminhtml/default/default/layout中的布局xml文件?