| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 | <?php/** * @file * Hooks provided by the Options module. */use Drupal\Core\Entity\FieldableEntityInterface;use Drupal\Core\Field\FieldStorageDefinitionInterface;/** * Alters the list of options to be displayed for a field. * * This hook can notably be used to change the label of the empty option. * * @param array $options *   The array of options for the field, as returned by *   \Drupal\Core\TypedData\OptionsProviderInterface::getSettableOptions(). An *   empty option (_none) might have been added, depending on the field *   properties. * @param array $context *   An associative array containing: *   - fieldDefinition: The field definition *     (\Drupal\Core\Field\FieldDefinitionInterface). *   - entity: The entity object the field is attached to *     (\Drupal\Core\Entity\EntityInterface). * * @ingroup hooks * @see hook_options_list() */function hook_options_list_alter(array &$options, array $context) {  // Check if this is the field we want to change.  if ($context['fieldDefinition']->id() == 'field_option') {    // Change the label of the empty option.    $options['_none'] = t('== Empty ==');  }}/** * Provide the allowed values for a 'list_*' field. * * Callback for options_allowed_values(). * * 'list_*' fields can specify a callback to define the set of their allowed * values using the 'allowed_values_function' storage setting. * * That function will be called: *  - either in the context of a specific entity, which is then provided as the *    $entity parameter, *  - or for the field generally without the context of any specific entity or *    entity bundle (typically, Views needing a list of values for an exposed *    filter), in which case the $entity parameter is NULL. * This lets the callback restrict the set of allowed values or adjust the * labels depending on some conditions on the containing entity. * * For consistency, the set of values returned when an $entity is provided * should be a subset of the values returned when no $entity is provided. * * @param \Drupal\Core\Field\FieldStorageDefinitionInterface $definition *   The field storage definition. * @param \Drupal\Core\Entity\FieldableEntityInterface|null $entity *   (optional) The entity context if known, or NULL if the allowed values are *   being collected without the context of a specific entity. * @param bool &$cacheable *   (optional) If an $entity is provided, the $cacheable parameter should be *   modified by reference and set to FALSE if the set of allowed values *   returned was specifically adjusted for that entity and cannot not be reused *   for other entities. Defaults to TRUE. * * @return array *   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. If $entity *   is NULL, you should return the list of all the possible allowed values in *   any context so that other code (e.g. Views filters) can support the allowed *   values for all possible entities and bundles. * * @ingroup callbacks * @see options_allowed_values() * @see options_test_allowed_values_callback() * @see options_test_dynamic_values_callback() */function callback_allowed_values_function(FieldStorageDefinitionInterface $definition, FieldableEntityInterface $entity = NULL, &$cacheable = TRUE) {  if (isset($entity) && ($entity->bundle() == 'not_a_programmer')) {    $values = [      1 => 'One',      2 => 'Two',    ];  }  else {    $values = [      'Group 1' => [        0 => 'Zero',        1 => 'One',      ],      'Group 2' => [        2 => 'Two',      ],    ];  }  return $values;}
 |