帮助添加自定义选项类型值字段
-
16-10-2019 - |
题
我正在扩展catalog_product_option_type_value数据库。我创建了自己的表格,my_catalog_product_option_type_value,并具有对option_type_id的引用。我有工作,我的课程正常工作,但是我在自定义选项网格中添加了一个表列,我不知道如何获得自定义字段值。
当我单击“保存并继续按钮”时,我希望能够获取新创建的或现有option_type_id的ID,然后使用该ID并使用“我的值”来插入或更新记录中的记录中的MY_CATALOG_PRODUCT_OPTION_TYPE_VALUE TABLE。我创建了一个观察者,该观察者拾取了catalog_product_prepare_save事件。那是有效的,但它只能返回产品,并且是选项。我无法获得我的价值。我在ProductController类中找到了此代码:
if (isset($productData['options']) && !$product->getOptionsReadonly()) {
$product->setProductOptions($productData['options']);
}
所以,我虽然我能够做类似的事情
$productData['options']['my_value']
但这是行不通的,因为帖子数据是[options] [id] [values] [id] [my_value]。我不知道如何获得这些选项的ID。所以,我有点卡住,希望有人可以指向我正确的方向
解决方案
看起来您必须进行一些数组迭代和键检查才能提取您的值。
在观察者中尝试一下。
$options = $observer->getEvent()->getProduct()->getOptions();
if (is_array($options)) {
foreach ($options as $key => $option) {
if (is_array($option) && array_key_exists('values',$option)) {
foreach ($option['values'] as $value) {
if (is_array($value) && array_key_exists('YOUR FIELD NAME',$value)) {
$result = $value['YOUR FIELD NAME'];
// do something with the $result
}
}
}
}
}
希望有帮助。
其他提示
在catalog_product_prepare_save观察者中,您应该使用代码
$ options = $ observer-> getEvent() - > getProduct() - > getProductOptions();
代替
$ options = $ observer-> getEvent() - > getProduct() - > getOptions();
并在Proxiblue答案中参考其余部分!
我测试了它与Magento 1.8.1.0版本一起使用的。