Erstellte ein benutzerdefiniertes Attribut über Setup, es erscheint jedoch nur neue Produkte

magento.stackexchange https://magento.stackexchange.com/questions/11424

  •  16-10-2019
  •  | 
  •  

Frage

Hallo, ich habe den nächsten Setup -Code:

$installer = new Mage_Catalog_Model_Resource_Setup('core_setup');

$installer->addAttribute('catalog_product', 'shipping_city', array(
    'group'             => 'General',
    'type'              => Varien_Db_Ddl_Table::TYPE_VARCHAR,
    'backend'           => '',
    'frontend'          => '',
    'label'             => 'Envio p/ Cidade',
    'input'             => 'text',
    'class'             => '',
    'source'            => '',
    'global'            => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL,
    'visible'           => false,
    'required'          => false,
    'user_defined'      => true,
    'default'           => '',
    'searchable'        => true,
    'filterable'        => true,
    'comparable'        => false,
    'visible_on_front'  => true,
    'unique'            => false,
    'apply_to'          => 'simple,configurable,virtual',
    'is_configurable'   => false ));
$installer->endSetup();

Dann debugge ich die Produkte mit DE "und" Event:

$product = $observer->getEvent()->getProduct();
Zend_Debug::dump($product->debug());die;

Das Problem ist, dass wenn ich versuche, ein bereits vorhandenes Produkt zu speichern, das Ereignis erhält und mein Debuggen nicht mein Attribut Shipping_City bringt. In einem neuen Produkt erscheint es in meinem Debuggen, aber nur bei de Save_after, in der SARE_BEFORE erscheint nicht auch ...

Irgendwelche Gedanken Jungs?

War es hilfreich?

Lösung

Wenn Sie ein neues Attribut hinzufügen und es dem Attributsatz hinzugefügt wurde, in dem Sie es möchten, lief alles gut mit $installer->addAttribute.

Das Problem ist, dass es aufgrund der EAV keinen Wert für Ihr neues Attribut gibt. Dies bedeutet, dass das Abfragen und Filterung durch Null filtern und wenn Sie anrufen $product->getNewAttribute() du bekommst einfach NULL.

Aber dieses Verhalten ist korrekt und beabsichtigt.

Sie können dies beheben, indem Sie ein kleines Skript schreiben und einen Standardwert für alle Produkte wie folgt einstellen:

$collection = Mage::getResourceModel('catalog/product_collection')->filterByWhateverYouWant();
foreach($collection as $product) {
    $product->setNewAttribute('myCoolValue')->save();
}

Seien Sie vorsichtig damit. Dieses Skript macht eine Abfrage für jedes Produkt in der Sammlung, die möglicherweise viel sein könnte.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top