Updates an instance of a field.
$instance: An associative array representing an instance structure. The required keys and values are:
Read-only ID properties are assigned automatically. Any other properties properties specified in $instance overwrite the existing values for the instance.
function field_update_instance($instance) {
// Check that the specified field exists.
$field = field_read_field($instance['field_name']);
if (empty($field)) {
throw new FieldException(t('Attempt to update an instance of a nonexistent field @field.', array(
'@field' => $instance['field_name'],
)));
}
// Check that the field instance exists (even if it is inactive, since we
// want to be able to replace inactive widgets with new ones).
$prior_instance = field_read_instance($instance['entity_type'], $instance['field_name'], $instance['bundle'], array(
'include_inactive' => TRUE,
));
if (empty($prior_instance)) {
throw new FieldException(t("Attempt to update an instance of field @field on bundle @bundle that doesn't exist.", array(
'@field' => $instance['field_name'],
'@bundle' => $instance['bundle'],
)));
}
$instance['id'] = $prior_instance['id'];
$instance['field_id'] = $prior_instance['field_id'];
_field_write_instance($instance, TRUE);
// Clear caches.
field_cache_clear();
module_invoke_all('field_update_instance', $instance, $prior_instance);
}