Estoy escuchando el evento sales_quote_save_before para notar cuándo se agrega un artículo al carrito. Una vez que se dispara, repito las opciones de elementos como esta:
$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 puede ver, en cuanto se alcanza una determinada opción (myOptionA en el ejemplo), quiero cambiar la opción seleccionada. Digamos que myOptionA es un menú desplegable y tiene 4 valores posibles. En caso de que se seleccione el valor 1, quiero establecer el valor 4 para ese elemento. Entonces, cuando el carrito haya terminado de cargarse, debe tener el valor 4 para myOptionA. No solo su nombre, sino también su precio. ¿Cómo podría hacer eso?