function hook_field_formatter_view

Build a renderable array for a field value.


$entity_type: The type of $entity.

$entity: The entity being displayed.

$field: The field structure.

$instance: The field instance.

$langcode: The language associated with $items.

$items: Array of values for this field.

$display: The display settings to use, as found in the 'display' entry of instance definitions. The array notably contains the following keys and values;

  • type: The name of the formatter to use.
  • settings: The array of formatter settings.

Return value

A renderable array for the $items, as an array of child elements keyed by numeric indexes starting from 0.

Related topics

7 functions implement hook_field_formatter_view()

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

field_test_field_formatter_view in modules/field/tests/
Implements hook_field_formatter_view().
file_field_formatter_view in modules/file/
Implements hook_field_formatter_view().
image_field_formatter_view in modules/image/
Implements hook_field_formatter_view().
list_field_formatter_view in modules/field/modules/list/list.module
Implements hook_field_formatter_view().
number_field_formatter_view in modules/field/modules/number/number.module
Implements hook_field_formatter_view().

... See full list


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


function hook_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
    $element = array();
    $settings = $display['settings'];
    switch ($display['type']) {
        case 'sample_field_formatter_simple':
            // Common case: each value is displayed individually in a sub-element
            // keyed by delta. The field.tpl.php template specifies the markup
            // wrapping each value.
            foreach ($items as $delta => $item) {
                $element[$delta] = array(
                    '#markup' => $settings['some_setting'] . $item['value'],
        case 'sample_field_formatter_themeable':
            // More elaborate formatters can defer to a theme function for easier
            // customization.
            foreach ($items as $delta => $item) {
                $element[$delta] = array(
                    '#theme' => 'mymodule_theme_sample_field_formatter_themeable',
                    '#data' => $item['value'],
                    '#some_setting' => $settings['some_setting'],
        case 'sample_field_formatter_combined':
            // Some formatters might need to display all values within a single piece
            // of markup.
            $rows = array();
            foreach ($items as $delta => $item) {
                $rows[] = array(
            $element[0] = array(
                '#theme' => 'table',
                '#header' => array(
                '#rows' => $rows,
    return $element;

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