I hope someone can help me.
I need to create an observer with creating a block on the cart table, which allows the customer to choose from radio button the options I will provide in each item separately in the product table, within the cart page and save it into the database to let the merchant see the options that his clients chose.
To achieve this I use quote item options and events. Here's what I have done till now:
My config.xml
<sales_quote_collect_totals_before>
<observers>
<shippingoptions>
<type>singleton</type>
<class>shippingoptions/observer</class>
<method>test</method>
</shippingoptions>
</observers>
</sales_quote_collect_totals_before>
My observer method
public function test($observer) { $quote = $observer->getQuote(); $quote_items = $quote->getItemsCollection(); foreach ($quote_items as $item) { $additionalOptions = array( array( 'title' => 'custom option title', 'type' => 'radio', // could be drop_down ,checkbox , multiple 'is_require' => 1, 'sort_order' => 0, 'values' => $this->getOptions() ) ); $item->addOption( array( 'code' => 'additional_options', 'value' => serialize($additionalOptions), ) ); } }
Let's say that the getOptions return an array. So I can't, actually render the radio button in the cart table. It just adds the option like this output under each item:
<dd>custom option title<br>
radio<br>
1<br>
0<br>
Array
</dd>
So I figure that I need to use a block to do the rendering thing, I try to do that but it didn't go well from my side. So could you help me to do that with from the observer side without overwriting the cart.phtml or any checkout file (And of course for a good reason)?