西部数码主机 | 阿里云主机| 虚拟主机 | 服务器 | 返回乐道官网
当前位置: 主页 > php教程 > magento教程 >

Magento中实现个性化订单编号代码

时间:2016-12-30 01:06来源:未知 作者:好模板 点击:
在Magento中实现个性化订单编号程序代码,因为Magento默认的订单号是以9位数的自增长,想有一点个性化的订单编号,下面分享的方法给各位。 if ($this-_useIncrementId !$object-getIncrementId())

在Magento中实现个性化订单编号程序代码,因为Magento默认的订单号是以9位数的自增长,想有一点个性化的订单编号,下面分享的方法给各位。

if ($this->_useIncrementId && !$object->getIncrementId()) {
/* @var $entityType Mage_Eav_Model_Entity_Type */
$entityType = Mage::getModel(‘eav/entity_type’)->loadByCode($this->_entityTypeForIncrementId);
$object->setIncrementId($entityType->fetchNewIncrementId($object->getStoreId()));
}
parent::_beforeSave($object);
return $this;

这里应该是生成订单号的了,根据’eav/entity_type,可以追踪到Mage_Eav_Model_Entity_Type类,然后查看方法fetchNewIncrementId,里面定义的$incrementId = $incrementInstance->getNextId();所以,新的订单号应该是$incrementInstance里的getNextId方法而来,至于$incrementInstance是什么,里面就没解析了,只能根据代码来判断了

在前面的代码中,可以发现 $incrementInstance = Mage::getModel($this->getIncrementModel())是这样定义的,而getIncrementModel()方法前后都没定义,想想magento底层定义的_call方法,这可能是数据表里的东西,打开eav_entity_type表,可以发现一个increament_model的字段。。这下都明了了,根据eav/entity_increment_numeric的定义,可以追踪到Mage_Eav_Model_Entity_Increment_Numeric类,这样只发现getNextId方法了。

 到这里,只要重写Mage_Eav_Model_Entity_Increment_Numeric类的getNextId就可以实现自定义的订单编码,可是会发现Invoice,shipment,都是用同一个类,所以我们increment_model记录来个性化自己的编码了

(责任编辑:好模板)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
热点内容