我最近借助Magento开发人员指南在Magento 1.3.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文件?