0

我一直在对我的 magento 安装进行一些修改以使其符合我的需求,但我遇到了很多墙壁。这是我所做的一些事情,以防需要它作为我即将提出的问题的参考。

Magento:向信用卡表单添加新字段

Magento:如何在客户信息字段中显示客户的电话号码

Magento:如何将订单/付款信息添加到 Admin-BackEnd

Magento:如何将数据保存到 order_payment 和 quote_payment

所以我遵循了一些关于添加自定义属性的教程,但我对如何运行脚本将属性添加到正确的表感到困惑。

这就是为什么。

我注意到magento 已经附带的“电话”字段出现在几张桌子上。

eav_attributes (4 个实例) 然后电话字段的属性 ID 也出现在其他表中,所有 4 个实例。现在,我添加了一个移动电话号码字段,如我之前的问题中所见,但我不知道如何使它出现在所有具有必要值的表格中。

我现在的资源有限,无法提供更详细的信息,但如果有人能理解我要解释的内容,请帮助我。

谢谢你。

4

1 回答 1

0

回答

  • 使用实体模块的设置资源类执行的设置脚本。

为什么?

虽然存在所有 EAV 属性和实体共有的类和表(例如eav_attributetable 和Mage_Eav_Model_Entity_Setup),但每个 EAV 实体可能有一个附加的属性信息表。通用设置资源类Mage_Eav_Model_Entity_Setup具有_prepareValues()为所有通用属性元数据(即表中的列eav_attribute)设置默认值的方法。在 的情况下,除其他外Mage_Customer,还有customer_eav_attribute表格。Mage_Customer设置资源类Mage_Customer_Model_Entity_Setup覆盖此方法,调用父方法并添加更多存储在customer_eav_attribute表中的元数据默认值。

因此,虽然设置资源文件可以在任何上下文(设置类实例)中执行,但如果它正在修改其他模块的 EAV 配置,则需要使用正确的类来执行此操作。

<?php

$installer = Mage::getResourceModel('customer/setup','customer_setup');

$installer->startSetup();

$installer->addAttribute(
    'customer',
    'new_attribute_code',
    array('label'=>'Label','type' => 'text')
)

$installer->endSetup();

根据添加到客户/客户地址表格的需要,还有进一步的工作要做。此类工作的参考资料可在 中找到Mage/Customer/sql/customer_setup/

于 2012-08-16T14:34:32.257 回答