naq*_*din 2 php zend-framework magento
我想知道是否有任何方法可以在Magento中创建自定义订单状态.我正在开发一个Magento扩展,我必须在磁盘订单中添加一些自定义订单状态.
我google了很多,但没有找到任何好的资源.
任何人都可以解释如何执行此操作,以及任何可以参考的资源.
假设您要添加"授权付款"状态和"授权"代码.
在config/global下将以下内容添加到模块的config.xml中:
<sales>
<order>
<statuses>
<authorized translate="label">
<label>Authorized Payment</label>
</authorized>
</statuses>
<states>
<authorized translate="label">
<label>Authorized Payment</label>
<statuses>
<authorized default="1"/>
</statuses>
<visible_on_front>1</visible_on_front>
</authorized>
</states>
</order>
</sales>
Run Code Online (Sandbox Code Playgroud)
早期它已经足够了,但在最近的版本中(如果我没记错的话,1.5.xx)还需要以下位.将以下内容添加到扩展的mysql setup/update文件中:
<?php
$installer = $this;
$statusTable = $installer->getTable('sales/order_status');
$statusStateTable = $installer->getTable('sales/order_status_state');
$statusLabelTable = $installer->getTable('sales/order_status_label');
$data = array(
array('status' => 'authorized', 'label' => 'Authorized Payment')
);
$installer->getConnection()->insertArray($statusTable, array('status', 'label'), $data);
$data = array(
array('status' => 'authorized', 'state' => 'authorized', 'is_default' => 1)
);
$installer->getConnection()->insertArray($statusStateTable, array('status', 'state', 'is_default'), $data);
?>
Run Code Online (Sandbox Code Playgroud)
这在技术上为您的系统添加了新的状态.现在您可以将其设置为您的订单,如下所示:
$order->setState('authorized', true, 'Status history message')
->save();
Run Code Online (Sandbox Code Playgroud)
请让我知道,如果你有任何问题.