function form_set_value
Changes submitted form values during form validation.
Use this function to change the submitted value of a form element in a form validation function, so that the changed value persists in $form_state through the remaining validation and submission handlers. It does not change the value in $element['#value'], only in $form_state['values'], which is where submitted values are always stored.
Note that form validation functions are specified in the '#validate' component of the form array (the value of $form['#validate'] is an array of validation function names). If the form does not originate in your module, you can implement hook_form_FORM_ID_alter() to add a validation function to $form['#validate'].
Parameters
$element: The form element that should have its value updated; in most cases you can just pass in the element from the $form array, although the only component that is actually used is '#parents'. If constructing yourself, set $element['#parents'] to be an array giving the path through the form array's keys to the element whose value you want to update. For instance, if you want to update the value of $form['elem1']['elem2'], which should be stored in $form_state['values']['elem1']['elem2'], you would set $element['#parents'] = array('elem1','elem2').
$value: The new value for the form element.
$form_state: Form state array where the value change should be recorded.
Related topics
24 calls to form_set_value()
- field_test_widget_multiple_validate in modules/
field/ tests/ field_test.field.inc - Form element validation handler for 'test_field_widget_multiple' widget.
- file_managed_file_submit in modules/
file/ file.module - Form submission handler for upload / remove buttons of managed_file elements.
- file_managed_file_validate in modules/
file/ file.module - An #element_validate callback for the managed_file element.
- filter_admin_format_form_validate in modules/
filter/ filter.admin.inc - Form validation handler for filter_admin_format_form().
- form_test_element_validate_name in modules/
simpletest/ tests/ form_test.module - Form element validation handler for 'name' in form_test_validate_form().
File
-
includes/
form.inc, line 2671
Code
function form_set_value($element, $value, &$form_state) {
drupal_array_set_nested_value($form_state['values'], $element['#parents'], $value, TRUE);
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.