shop:onGetOrderItemFieldOptions event
The shop:onGetOrderItemFieldOptions event allows to populate drop-down, radio- or checkbox list fields, which you added with the shop:onExtendOrderItemForm event, with custom options. Usually you do not need to use this event for fields which represent data relations. But if you want a standard field (corresponding an integer-typed database column, for example), to be rendered as a drop-down list, you should handle this event in your module.
The event handler should accept 2 parameters - the field name and a current field value. If the current field value is -1, the handler should return an array containing a list of options. If the current field value is not -1, the handler should return a string, corresponding the value.
Event handler example:
public function subscribeEvents()
{
Backend::$events->addEvent('shop:onExtendOrderItemModel', $this, 'extend_order_item_model');
Backend::$events->addEvent('shop:onExtendOrderItemForm', $this, 'extend_order_item_form');
Backend::$events->addEvent('shop:onGetOrderItemFieldOptions', $this, 'get_orderitem_field_options');
}
public function extend_order_item_model($order_item)
{
$order_item->define_column('x_custom_field', 'Some drop-down field')->invisible();
}
public function extend_order_item_form($order_item)
{
$order_item->add_form_field('x_custom_field')->tab('Custom Fields')->renderAs(frm_dropdown);
}
public function get_orderitem_field_options($field_name, $current_key_value)
{
if ($field_name == 'x_custom_field')
{
$options = array(
0 => 'Option 1',
1 => 'Option 2'
);
if ($current_key_value == -1)
return $options;
if (array_key_exists($current_key_value, $options))
return $options[$current_key_value];
}
}
Next: shop:onGetOrderItemDisplayDetails event
Previous: shop:onOrderItemDeleted event
Return to Handling LemonStand events

