function commerce_product_reference_field_widget_form in Commerce Core 7
Implements hook_field_widget_form().
Used to define the form element for custom widgets.
File
- modules/
product_reference/ commerce_product_reference.module, line 1001 - Defines a field type for referencing products from other entities.
Code
function commerce_product_reference_field_widget_form(&$form, &$form_state, $field, $instance, $langcode, $items, $delta, $element) {
// Define the autocomplete textfield for products.
if ($instance['widget']['type'] == 'commerce_product_reference_autocomplete') {
$product_ids = array();
$skus = array();
// Build an array of product IDs from this field's values.
foreach ($items as $item) {
$product_ids[] = $item['product_id'];
}
// Load those products and loop through them to extract their SKUs.
$products = commerce_product_load_multiple($product_ids);
foreach ($product_ids as $product_id) {
if (!empty($products[$product_id])) {
$skus[] = $products[$product_id]->sku;
}
}
return $element + array(
'#type' => 'textfield',
'#default_value' => implode(', ', $skus),
'#autocomplete_path' => $instance['widget']['settings']['autocomplete_path'] . '/' . $instance['entity_type'] . '/' . $field['field_name'] . '/' . $instance['bundle'],
'#size' => $instance['widget']['settings']['size'],
'#maxlength' => 2048,
'#element_validate' => array(
'commerce_product_reference_autocomplete_validate',
),
);
}
elseif ($instance['widget']['type'] == 'commerce_product_reference_hidden') {
return array();
}
}