function entity_example_basic_view

Menu callback to display an entity.

As we load the entity for display, we're responsible for invoking a number of hooks in their proper order.

See also

hook_entity_prepare_view()

hook_entity_view()

hook_entity_view_alter()

Related topics

1 string reference to 'entity_example_basic_view'
entity_example_menu in entity_example/entity_example.module
Implements hook_menu().

File

entity_example/entity_example.module, line 315

Code

function entity_example_basic_view($entity, $view_mode = 'tweaky') {
    // Our entity type, for convenience.
    $entity_type = 'entity_example_basic';
    // Start setting up the content.
    $entity->content = array(
        '#view_mode' => $view_mode,
    );
    // Build fields content - this is where the Field API really comes in to play.
    // The task has very little code here because it all gets taken care of by
    // field module.
    // field_attach_prepare_view() lets the fields load any data they need
    // before viewing.
    field_attach_prepare_view($entity_type, array(
        $entity->basic_id => $entity,
    ), $view_mode);
    // We call entity_prepare_view() so it can invoke hook_entity_prepare_view()
    // for us.
    entity_prepare_view($entity_type, array(
        $entity->basic_id => $entity,
    ));
    // Now field_attach_view() generates the content for the fields.
    $entity->content += field_attach_view($entity_type, $entity, $view_mode);
    // OK, Field API done, now we can set up some of our own data.
    $entity->content['created'] = array(
        '#type' => 'item',
        '#title' => t('Created date'),
        '#markup' => format_date($entity->created),
    );
    $entity->content['item_description'] = array(
        '#type' => 'item',
        '#title' => t('Item Description'),
        '#markup' => $entity->item_description,
    );
    // Now to invoke some hooks. We need the language code for
    // hook_entity_view(), so let's get that.
    global $language;
    $langcode = $language->language;
    // And now invoke hook_entity_view().
    module_invoke_all('entity_view', $entity, $entity_type, $view_mode, $langcode);
    // Now invoke hook_entity_view_alter().
    drupal_alter(array(
        'entity_example_basic_view',
        'entity_view',
    ), $entity->content, $entity_type);
    // And finally return the content.
    return $entity->content;
}