Обновление атрибута в скрипте установки Magento

Я пытаюсь обновить пользовательский атрибут с помощью сценария 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 «побежало», о чем свидетельствует core_resources версия … но ярлык не обновился.

Спасибо за понимание!

2

Решение

Я считаю, что вам нужно сделать небольшую поправку обновить-0.1.3-0.1.4.php скрипт

Просто изменить updateAttribute аргументы использовать frontend_label (вместо label):

…
$installer->updateAttribute('customer', 'genisys_user_id', 'frontend_label', 'Genisys Customer Number');
…

Я столкнулся с той же проблемой, что и ОП, и обнаружение этого вопроса показало, что произошло что-то не интуитивное.

В то время как addAttribute(…) ожидает label ключ в массиве атрибутов кажется, что updateAttribute(…) не понимает label в качестве поля-аргумента.

Я проверил eav_attribute стол и обнаружил, что нет label столбец, но есть frontend_label колонка:

введите описание изображения здесь

Я не могу сделать много выводов о том, почему эти два, казалось бы, сплоченных метода имеют такое разобщение, но, надеюсь, это поможет другим с такой же проблемой.

Увидеть: http://www.webguys.de/magento-1/eav-attribute-setup для мелкого песка.

3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector