我正在尝试通过Magento脚本更新自定义属性。我需要做的就是更改属性的标签,该标签位于客户表上。
我在网上发现要确保的主要内容是升级脚本的命名,以及config.xml
文件中的相应版本。
每次尝试时,core_resource都会正确地获得版本号的升级/碰撞,但标签不会改变。我认为它是我的升级脚本中的一些东西。我究竟做错了什么?我需要以不同方式引用该属性吗?
在数据库core_resources
中:
Equisolve_GenisysUserId_setup | 0.1.4 | 0.1.4
config.xml
文件:
<?xml version="1.0"?>
<config>
<modules>
<Equisolve_GenisysUserId>
<version>0.1.4</version>
</Equisolve_GenisysUserId>
</modules>
<global>
<resources>
<Equisolve_GenisysUserId_setup>
<setup>
<module>Equisolve_GenisysUserId</module>
<class>Mage_Customer_Model_Entity_Setup</class>
</setup>
<connection>
<use>core_setup</use>
</connection>
</Equisolve_GenisysUserId_setup>
<Equisolve_GenisysUserId_write>
<connection>
<use>core_write</use>
</connection>
</Equisolve_GenisysUserId_write>
<Equisolve_GenisysUserId_read>
<connection>
<use>core_read</use>
</connection>
</Equisolve_GenisysUserId_read>
</resources>
</global>
</config>
install-0.1.0.php
处的原始安装文件:
<?php
$installer = $this;
$installer->startSetup();
$setup = new Mage_Eav_Model_Entity_Setup('core_setup');
$entityTypeId = $setup->getEntityTypeId('customer');
$attributeSetId = $setup->getDefaultAttributeSetId($entityTypeId);
$attributeGroupId = $setup->getDefaultAttributeGroupId($entityTypeId, $attributeSetId);
$installer->addAttribute("customer", "genisys_user_id", array(
"type" => "varchar",
"backend" => "",
"label" => "Genisys User ID",
"input" => "text",
"source" => "",
"visible" => true,
"required" => false,
"default" => "",
"frontend" => "",
"unique" => false,
"note" => "The Reference ID to the customer within Genisys / AlphaRENTAL to connect their user account with their existing information and orders."
)
);
$setup->addAttributeToGroup(
$entityTypeId,
$attributeSetId,
$attributeGroupId,
'genisys_user_id',
'999' //sort_order
);
$gUserAttribute = Mage::getSingleton("eav/config")->getAttribute("customer", "genisys_user_id");
$gUserAttribute->setData('used_in_forms', array('adminhtml_customer'));
$gUserAttribute->setData("is_used_for_customer_segment", true);
// Other options can be found in the customer_form_attribute database table; setting this data is required
$gUserAttribute->save();
$installer->endSetup();
?>
upgrade-0.1.3-0.1.4.php
升级脚本:
<?php
$installer = $this;
$installer->startSetup();
$installer->updateAttribute('customer','genisys_user_id','label', 'Genisys Customer Number');
$installer->endSetup();
?>
我知道版本号存在差距;介于两者之间。升级到0.1.4&#34;运行&#34;由core_resources
版本证明......但标签尚未更新。
感谢您的见解!
答案 0 :(得分:4)
我相信您需要对升级-0.1.3-0.1.4.php 脚本进行小幅调整
只需修改updateAttribute
参数即可使用frontend_label
(而不是label
):
…
$installer->updateAttribute('customer', 'genisys_user_id', 'frontend_label', 'Genisys Customer Number');
…
我正面临与OP相同的问题,发现这个问题表明发生了一些不直观的事情。
虽然addAttribute(…)
期望属性数组中有label
个键,但updateAttribute(…)
似乎不理解label
作为字段参数。
我查看了eav_attribute
表,发现没有label
列,但有frontend_label
列:
我无法得出很多结论,为什么这两个看似有凝聚力的方法有这种脱节,但希望这可以帮助其他人解决同样的问题。
请参阅:http://www.webguys.de/magento-1/eav-attribute-setup了解细节。