2016-04-19 18 views
1

Ich versuche, ein benutzerdefiniertes Attribut über ein Magento-Skript zu aktualisieren. Ich muss lediglich die Bezeichnung des Attributs ändern, das sich in der Kundentabelle befindet.Aktualisieren des Attributs im Magento-Installationsskript

Ich habe online gefunden, dass die wichtigsten Dinge zu gewährleisten, ist die Benennung der Upgrade-Skripte und die entsprechende Version in der Datei config.xml zu.

Jedes Mal, wenn ich versuche, erhält die Core_Ressource ein Upgrade/Bump in Versionsnummer richtig, aber das Label ändert sich nicht. Ich nehme an, es ist etwas in meinem Upgrade-Skript. Was mache ich falsch? Muss ich das Attribut anders referenzieren?

In der DB core_resources:

Equisolve_GenisysUserId_setup | 0.1.4 | 0.1.4 

Die config.xml Datei:

<?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> 

Original-Datei installieren, bei 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-Skript auf 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(); 
?> 

Ich weiß, dass es eine Lücke in Versionsnummern gibt; Da waren Dateien dazwischen. Die Aktualisierung auf 0.1.4 "lief", wie durch die core_resources Version belegt ... aber das Etikett wurde nicht aktualisiert.

Danke für die Einsicht!

+0

Haben Sie Fehler beim ersten Upgrade von 0.1.4 gemacht? Haben Sie zum Beispiel 0.1.4 erstellt und dann realisiert, dass Sie etwas vergessen haben; dann geändert und gespeichert, aber nicht auf eine neuere Version aktualisiert? Selbst wenn du einen Charakter änderst, solltest du am besten einen neuen erstellen (zum Beispiel 0.1.5). –

Antwort

2

Ich glaube, Sie brauchen ein kleines zwicken Upgrade-0.1.3-0.1.4.php machen Skript

einfach updateAttribute Argumente ändern frontend_label (statt label) zu verwenden:

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

Ich war mit dem gleichen Problem konfrontiert wie das OP und diese Frage zu finden, deutete darauf hin, dass etwas Unintuitives passierte.

Während addAttribute(…) erwartet einen label Schlüssel in dem Attribut-Array es scheint, dass updateAttribute(…) nicht label als Feldargument nicht versteht.

Ich habe die eav_attribute Tisch und stellte fest, dass es keine label Spalte ist, aber es ist eine frontend_label Säule:

enter image description here

Ich kann nicht viel von einem Abschluss, warum diese beiden scheinbar zusammenhängende ziehen Methoden haben diese Trennung, aber hoffentlich hilft dies anderen mit dem gleichen Problem.

Siehe: http://www.webguys.de/magento-1/eav-attribute-setup für die nittig kiesige.

Verwandte Themen