Ich erstelle Magento-Attributoptionen über ein Skript, aber dann muss ich die neue ID abrufen und sie sofort im selben Skript verwenden können.
Im Moment wird die ID nicht übernommen - wenn ich das Skript beende und neu starte, erkennt es die erstellte Option und gibt die ID zurück, jedoch nicht als Teil des gleichen Skripts.
Hier ist der Code, den ich verwende:
$attr = Mage::getModel('catalog/product')->getResource()->getAttribute($key);
if ($attr->usesSource()) {
$vattr_id = $attr->getSource()->getOptionId($value);
}else{
echo "Keine Quelle";
$vattr_id = false;
}
if($vattr_id){
return $vattr_id;
}else{
$attr_model = Mage::getModel('catalog/resource_eav_attribute');
$attr = $attr_model->loadByCode('catalog_product', $key);
$attr_id = $attr->getAttributeId();
$option['attribute_id'] = $attr_id;
$option['value'][$value][0] = $value;
$option['value'][$value][1] = $value;
$setup = new Mage_Eav_Model_Entity_Setup('core_setup');
$setup->addAttributeOption($option);
$attr = Mage::getModel('catalog/product')->getResource()->getAttribute($key);
if ($attr->usesSource()) {
$vattr_id = $attr->getSource()->getOptionId($value);
echo "AttrID: $vattr_id";
}
}
Wenn Sie dies ausführen (mit dem erforderlichen Mage::app()
usw.), wird die Option erstellt und im Magento-Backend angezeigt, aber die $vattr_id
ist NULL
. Wenn ich das Skript neu lade, findet es die Attributoption in diesem ersten Block, wie es sollte.
Ich vermute, es hat etwas mit der Art und Weise zu tun, wie Magento die Modelle zwischenspeichert, bin mir aber nicht sicher, wo ich nachsehen muss, um diese zu löschen?