function list_allowed_values

You are here

7 list.module list_allowed_values($field, $instance = NULL, $entity_type = NULL, $entity = NULL)

Returns the array of allowed values for a list field.

The strings are not safe for output. Keys and values of the array should be sanitized through field_filter_xss() before being displayed.

Parameters

$field: The field definition.

$instance: (optional) A field instance array. Defaults to NULL.

$entity_type: (optional) The type of entity; e.g. 'node' or 'user'. Defaults to NULL.

$entity: (optional) The entity object. Defaults to NULL.

Return value

The array of allowed values. Keys of the array are the raw stored values (number or text), values of the array are the display labels.

3 calls to list_allowed_values()
list_field_formatter_view in modules/field/modules/list/list.module
Implements hook_field_formatter_view().
list_field_validate in modules/field/modules/list/list.module
Implements hook_field_validate().
list_options_list in modules/field/modules/list/list.module
Implements hook_options_list().
2 string references to 'list_allowed_values'
hook_field_update_field in modules/field/field.api.php
Act on a field being updated.
list_field_update_field in modules/field/modules/list/list.module
Implements hook_field_update_field().

File

modules/field/modules/list/list.module, line 235
Defines list field types that can be used with the Options module.

Code

function list_allowed_values($field, $instance = NULL, $entity_type = NULL, $entity = NULL) {
  $allowed_values = &drupal_static(__FUNCTION__, array());

  if (!isset($allowed_values[$field['id']])) {
    $function = $field['settings']['allowed_values_function'];
    // If $cacheable is FALSE, then the allowed values are not statically
    // cached. See list_test_dynamic_values_callback() for an example of
    // generating dynamic and uncached values.
    $cacheable = TRUE;
    if (!empty($function) && function_exists($function)) {
      $values = $function($field, $instance, $entity_type, $entity, $cacheable);
    }
    else {
      $values = $field['settings']['allowed_values'];
    }

    if ($cacheable) {
      $allowed_values[$field['id']] = $values;
    }
    else {
      return $values;
    }
  }

  return $allowed_values[$field['id']];
}

Comments

<?php
/*
assuming there's a field named machine name is 'field_my_field_name' whose type is a list (float, integer or text), and you want to get the values that were entered into the "Allowed values list" textarea on the edit screen for the field
*/
$all_fields_on_my_website = field_info_fields();
$allowed_values= list_allowed_values($all_fields_on_my_website["field_my_field_name"]);
/*
$allowed_values is now an array of $key=>value pairs that can be dropped into the '#options' value for a form field array, for instance
*/
//example:
$form = array();
$form['my_form_element'] = array(
'#type' => 'select',
'#title' => t('Choose something, sucka!'),
'#description' => t('Descriptive text under form elements rather than above them is a great UX choice, really.'),
'#options' => $allowed_values,
);
return $form;

nice title '#title' => t('Choose something, sucka!') :)

Crazy russian developer :)

Thanks for the tip on field_info_fields()

According to the documentation on field_info_fields(): "Use of this function should be avoided when possible, since it loads and statically caches a potentially large array of information".

Instead you can use:

$my_field = field_info_field('field_my_field_name');
$allowed_values= list_allowed_values($my_field);

Thanks for your tips