Benutzerdefiniertes Produkt-Multiselect-Attribut, das nicht im Administrator gespeichert wird


8

Ich habe erfolgreich ein benutzerdefiniertes Produkt-Multiselect-Attribut erstellt.

Aber wenn ich das Produkt in admin bearbeite und einige Optionen (Länder) meines Multiselect-Attributs auswähle und wenn ich auf Speichern klicke, wird es erfolgreich gespeichert.

Wenn ich jedoch dasselbe Produkt erneut öffne, wird es nicht vor den ausgewählten Optionen angezeigt. Dies bedeutet, dass mein benutzerdefiniertes Produktattribut nicht im Produktmodell gespeichert wird.

Kannst du bitte jemandem helfen? Ich bin sehr müde. Und ich habe viele Stunden versucht. Dann platziere ich hier.

etc / config.xml Datei

<config>
    <modules>
        <Exinent_Shiplimit>
            <version>0.1.0</version>
        </Exinent_Shiplimit>
    </modules>

    <global>
    <models>
       <checkout>
         <rewrite>
           <type_onepage>Exinent_Shiplimit_Model_Checkout_Type_Onepage</type_onepage>
         </rewrite>
        </checkout>
      </models>
    <resources>
            <exinent_shiplimit_setup>
                <setup>
                    <module>Exinent_Shiplimit</module>
                    <class>Mage_Catalog_Model_Resource_Eav_Mysql4_Setup</class>
                </setup>
            </exinent_shiplimit_setup>
        </resources>
    </global>
    </config>

app \ code \ local \ Exinent \ Shiplimit \ sql \ exinent_shiplimit_setup \ mysql4-install-0.1.0.php

<?php 
$installer = $this;
/* @var $installer Mage_Catalog_Model_Resource_Eav_Mysql4_Setup */

$installer->startSetup();
$installer->addAttribute(
    'catalog_product',
    'custom_countries', 
    array(
        'group'             => 'General',
        'type'              => 'varchar',
        'backend'           => '',
        'user_defined' => '1',
        'frontend'          => '',
        'label'             => 'Shipping Restricted Countries',
        'input'             => 'multiselect',
        'source'            => 'Mage_Catalog_Model_Product_Attribute_Source_Countryofmanufacture',
        'global'            => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_WEBSITE

    )
);

$installer->updateAttribute('catalog_product', 'custom_countries', 'backend_model', '');
$installer->endSetup();
?>

Antworten:


16

Sie stellen das so ein, backend_modelwie ''es sein sollte'eav/entity_attribute_backend_array'

Und Sie möchten den Typ als textnicht definieren varchar, da varchar eine Untergrenze hat, die für das Quellmodell erforderlich ist.

Schauen Sie sich als eav_attributeReferenz in der Tabelle um.

Hoffe das hilft.


Ich denke, es ist nur "Backend" anstelle von "backend_model"
Aphroz

4
Wenn Sie addAttributein Setup-Skripten verwenden, ist es "Backend". In allen anderen Fällen ( updateAttributeoder direkt in der Datenbank) ist es "backend_model".
Andreas von Studnitz

1
perfekte Antwort mit netter Erklärung !!! +1 :)
SagarPPanchal

Wie kann man programmgesteuert Werte setzen?
Jafar Pinjar

@jafarpinjar Welchen Wert versuchst du speziell einzustellen?
B00MER
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.