function hook_field_presave

Define custom presave behavior for this module's field types.

Make changes or additions to field values by altering the $items parameter by reference. There is no return value.

Parameters

$entity_type: The type of $entity.

$entity: The entity for the operation.

$field: The field structure for the operation.

$instance: The instance structure for $field on $entity's bundle.

$langcode: The language associated with $items.

$items: $entity->{$field['field_name']}[$langcode], or an empty array if unset.

Related topics

4 functions implement hook_field_presave()

Note: this list is generated by pattern matching, so it may include some functions that are not actually implementations of this hook.

file_field_presave in modules/file/file.field.inc
Implements hook_field_presave().
image_field_presave in modules/image/image.field.inc
Implements hook_field_presave().
number_field_presave in modules/field/modules/number/number.module
Implements hook_field_presave().
taxonomy_field_presave in modules/taxonomy/taxonomy.module
Implements hook_field_presave().
1 invocation of hook_field_presave()
field_attach_presave in modules/field/field.attach.inc
Perform necessary operations just before fields data get saved.

File

modules/field/field.api.php, line 462

Code

function hook_field_presave($entity_type, $entity, $field, $instance, $langcode, &$items) {
    if ($field['type'] == 'number_decimal') {
        // Let PHP round the value to ensure consistent behavior across storage
        // backends.
        foreach ($items as $delta => $item) {
            if (isset($item['value'])) {
                $items[$delta]['value'] = round($item['value'], $field['settings']['scale']);
            }
        }
    }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.