Я пытаюсь получить данные опций пакета. используя это: $product->getBundleOptionsData
Мне нужно использовать это, поскольку я пытаюсь изменить данные программно, и я хотел бы сделать это так, как это было бы удобно в админе.
Однако, когда я var_dump результат указанной выше функции, я получаю NULL
а на стороне администратора в модели продукта модели пакета я правильно получаю данные.
Когда я var_dump $product
в моем собственном файле, я получаю гораздо более короткие данные, чем когда я var_dump в функции сохранения типа модели пакета.
что мне нужно сделать, чтобы загрузить все данные продукта, поэтому я могу использовать getBundleOptionsData
. Я смотрел в нескольких файлах и искал в googled, но не могу найти ответ.
Наконец, я заставил его работать, чтобы получить данные параметров пакета, чтобы я мог манипулировать им. Я нашел основной код в модели пула объектов magento для класса duplicateProduct: мне нужно было добавить add_id (осторожно, чтобы этого не было)
вот код на последнем этапе.
$product->getTypeInstance(true)->setStoreFilter($product->getStoreId(), $product); $optionCollection = $product->getTypeInstance(true)->getOptionsCollection($product); $selectionCollection = $product->getTypeInstance(true)->getSelectionsCollection( $product->getTypeInstance(true)->getOptionsIds($product), $product ); $optionCollection->appendSelections($selectionCollection); $optionRawData = array(); $selectionRawData = array(); $i = 0; foreach ($optionCollection as $option) { $optionRawData[$i] = array( 'option_id' => $option->getOptionId(), //my addition. important otherwise, options going to be duplicated 'required' => $option->getData('required'), 'position' => $option->getData('position'), 'type' => $option->getData('type'), 'title' => $option->getData('title')?$option->getData('title'):$option->getData('default_title'), 'delete' => '' ); foreach ($option->getSelections() as $selection) { $selectionRawData[$i][] = array( 'product_id' => $selection->getProductId(), 'position' => $selection->getPosition(), 'is_default' => $selection->getIsDefault(), 'selection_price_type' => $selection->getSelectionPriceType(), 'selection_price_value' => $selection->getSelectionPriceValue(), 'selection_qty' => $selection->getSelectionQty(), 'selection_can_change_qty' => $selection->getSelectionCanChangeQty(), 'delete' => '' ); } $i++; } $product->setBundleOptionsData($optionRawData); //changed it to $product $product->setBundleSelectionsData($selectionRawData); //changed it to $product
вы можете либо изменить исходные данные в optionsrawdata. или getBundleOptionsData. и то же самое для другого.