1 form_example_elements.inc | form_example_phonenumber_combined_process($element, &$form_state, $complete_form) |
Process callback for the combined version of the phonenumber element.
File
- modules/
examples/ form_example/ form_example_elements.inc, line 292 - This is an example demonstrating how a module can define custom form and render elements.
Code
function form_example_phonenumber_combined_process($element, &$form_state, $complete_form) {
// #tree = TRUE means that the values in $form_state['values'] will be stored
// hierarchically. In this case, the parts of the element will appear in
// $form_state['values'] as
// $form_state['values']['<element_name>']['areacode'],
// $form_state['values']['<element_name>']['prefix'],
// etc. This technique is preferred when an element has member form
// elements.
$element['#tree'] = TRUE;
// Normal FAPI field definitions, except that #value is defined.
$element['areacode'] = array(
'#type' => 'textfield',
'#size' => 3,
'#maxlength' => 3,
'#required' => TRUE,
'#prefix' => '(',
'#suffix' => ')',
);
$element['prefix'] = array(
'#type' => 'textfield',
'#size' => 3,
'#maxlength' => 3,
'#required' => TRUE,
);
$element['extension'] = array(
'#type' => 'textfield',
'#size' => 4,
'#maxlength' => 4,
'#required' => TRUE,
);
$matches = array();
$match = preg_match('/^(\d{3})(\d{3})(\d{4})$/', $element['#default_value'], $matches);
if ($match) {
// Get rid of the "all match" element.
array_shift($matches);
list($element['areacode']['#default_value'], $element['prefix']['#default_value'], $element['extension']['#default_value']) = $matches;
}
return $element;
}