Estou ouvindo o evento sales_quote_save_before para perceber quando um item é adicionado ao carrinho. Uma vez acionado, eu percorro as opções de itens como este:
$quote = $observer->getEvent()->getQuote();
foreach ($quote->getAllItems() as $item) {
$options = $item->getProduct()->getTypeInstance(true)->getOrderOptions($item->getProduct());
foreach($options['options'] as $option) {
if($option['label'] == 'myOptionA') {
// Here I want to change the selected value for the option
}
}
}
Como você vê, assim que uma determinada opção (myOptionA no exemplo) for atingida, desejo alterar a opção selecionada. Então, digamos que myOptionA é uma lista suspensa e tem 4 valores possíveis. Caso o valor 1 seja selecionado, desejo definir o valor 4 para esse item. Portanto, quando o carrinho terminar de carregar, ele deverá ter o valor 4 para myOptionA. Não apenas o nome, mas também o preço. Como eu pude fazer isso?