1

我是 magento 的新手,我的工作版本是 1.6.2.0。
我正在尝试添加我自己的自定义运输方式模块,但我遇到的问题很少。我的 magento 已经有自定义结帐模块 - 三步结帐,我要做的是保存我在第三步(付款和运输)(类似于商店取货地点)中选择的附加运输信息到报价单,然后在审核中检索报价单数据并将其保存到订单。
我正在使用事件来执行此操作:
checkout_controller_onepage_save_shipping_method 将数据保存到 Quote
checkout_type_onepage_save_order 以将数据保存到 Order
问题是 Quote 和 Order 没有可以保存数据的可用空间,因此我为我的模块创建了安装程序:

$installer = $this;
$installer->startSetup();
$packboxName = array(
    'type'              => 'varchar',
    'backend'           => '',
    'frontend'          => '',
    'label'             => 'packboxname',
    'input'             => '',
    'class'             => '',
    'source'            => '',
    'global'            => 1,
    'visible'           => true,
    'required'          => false,
    'user_defined'      => false,
    'default'           => '',
    'searchable'        => false,
    'filterable'        => false,
    'comparable'        => false,
    'visible_on_front'  => false,
    'visible_in_advanced_search' => false,
    'unique'            => false
);
$installer->addAttribute('order', "packboxname", $packboxName);
$installer->getConnection()->addColumn($installer->getTable('sales/order'), 'packboxname', 'varchar(255) DEFAULT NULL');
$installer->addAttribute('quote', "packboxname", $packboxName);
$installer->getConnection()->addColumn($installer->getTable('sales/quote'), 'packboxname', 'varchar(255) DEFAULT NULL');

$installer->endSetup();


我有一个错误说

$installer->addAttribute('quote'

实体 ID 错误。所以我检查了数据库,表:eav_entity_type,没有任何“报价”类型(希望有一个“订单”)我的安装程序。

$installer->addEntityType('quote', array(
        'entity_model'    => 'sales/quote',
        'table'           =>'sales/quote',
    ));

现在它正在工作我有额外的地方可以保存我的信息,但是我的朋友告诉我我不应该使用 addEntityType,还有其他方法可以实现我需要的吗?

4

1 回答 1

0

我想也许你正在寻找的东西可以在这个答案中找到:https ://stackoverflow.com/a/4389786/823549

该答案中的一个重点是触发的事件sales_convert_quote_to_order- 当报价转换为订单时,这将被触发,并且无论您的其他结帐模块做什么都会发生。此答案也很有用,因为您可以在订单网格页面中查看自定义列的详细信息。

于 2012-10-06T14:31:37.013 回答