Populates the template variables with the available field values.
The $variables array will be populated with all the field instance values associated with the given entity type, keyed by field name; in case of translatable fields the language currently chosen for display will be selected.
$entity_type: The type of $entity; e.g. 'node' or 'user'.
Drupal\Core\Entity\EntityInterface $entity: The entity with fields to render.
$element: The structured array containing the values ready for rendering.
$variables: The variables array is passed by reference and will be populated with field values.
function field_attach_preprocess($entity_type, EntityInterface $entity, $element, &$variables) {
foreach (field_info_instances($entity_type, $entity
->bundle()) as $instance) {
$field_name = $instance['field_name'];
if (isset($element[$field_name]['#language'])) {
$langcode = $element[$field_name]['#language'];
$variables[$field_name] = isset($entity->{$field_name}[$langcode]) ? $entity->{$field_name}[$langcode] : NULL;
}
}
// Let other modules make changes to the $variables array.
$context = array(
'entity_type' => $entity_type,
'entity' => $entity,
'element' => $element,
);
drupal_alter('field_attach_preprocess', $variables, $context);
}