function field_default_view
Builds a renderable array for one field on one entity instance.
Parameters
$entity_type: The type of $entity; e.g. 'node' or 'user'.
$entity: A single object of type $entity_type.
$field: The field structure for the operation.
$instance: An array containing each field on $entity's bundle.
$langcode: The language associated to $items.
$items: Array of field values already loaded for the entities, keyed by entity id.
$display: Can be either:
- the name of a view mode;
- or an array of custom display settings, as found in the 'display' entry of $instance definitions.
2 invocations of field_default_view()
- field_attach_view in modules/
field/ field.attach.inc - Returns a renderable array for the fields on an entity.
- field_view_field in modules/
field/ field.module - Returns a renderable array for the value of a single field in an entity.
File
-
modules/
field/ field.default.inc, line 191
Code
function field_default_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
list($id, $vid, $bundle) = entity_extract_ids($entity_type, $entity);
$addition = array();
// Prepare incoming display specifications.
if (is_string($display)) {
$view_mode = $display;
$display = field_get_display($instance, $view_mode, $entity);
}
else {
$view_mode = '_custom_display';
}
if ($display['type'] !== 'hidden') {
// Calling the formatter function through module_invoke() can have a
// performance impact on pages with many fields and values.
$function = $display['module'] . '_field_formatter_view';
if (function_exists($function)) {
$elements = $function($entity_type, $entity, $field, $instance, $langcode, $items, $display);
if ($elements) {
$info = array(
'#theme' => 'field',
'#weight' => $display['weight'],
'#title' => $instance['label'],
'#access' => field_access('view', $field, $entity_type, $entity),
'#label_display' => $display['label'],
'#view_mode' => $view_mode,
'#language' => $langcode,
'#field_name' => $field['field_name'],
'#field_type' => $field['type'],
'#field_translatable' => $field['translatable'],
'#entity_type' => $entity_type,
'#bundle' => $bundle,
'#object' => $entity,
'#items' => $items,
'#formatter' => $display['type'],
);
$addition[$field['field_name']] = array_merge($info, $elements);
}
}
}
return $addition;
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.