我创建了一个观察者,将选定的多选属性值保存在一个单独的表中。仅当属性值不存在时才应保存。这是我的代码
public function catalogProductSaveBefore(Varien_Event_Observer $observer)
{
$product=$observer->getProduct();
$_product=Mage::getModel('catalog/product')->load($product->getId());
$makeOptions=$_product->getAttributeText('make'); //array [0] => Audi [1] => BMW
$partsfindermodel=Mage::getModel('partsfinder/parts');
foreach($makeOptions as $makeOption)
{
if(!$partsfindermodel->getMake($makeOption))
{
$partsfindermodel->setMake($makeOption)->save();
}
}
}
只有数组中的最后一个元素保存在表中。
如果值不存在,如何保存?
我认为您需要考虑按属性(例如零件号)获取模型,如果加载了它,您将有一个ID。如果没有条目,那么您将不会获得ID。因此,在保存时,它应该可以工作。
另一个问题是,你可以在数据库中添加更多的字段到模型中,但有时它们不起作用——除非你再次运行安装脚本。因此,您可能需要在删除表和core_resource中用于设置模块的条目后尝试此操作。然后,在初次安装时,所有的表都会在后端生成,并神奇地与在线表单一起正常工作。