double_field.module in Double Field 4.x
Same filename and directory in other branches
Primary module hooks for Double Field module.
File
double_field.moduleView source
<?php
/**
* @file
* Primary module hooks for Double Field module.
*/
use Drupal\Core\Entity\EntityInterface;
/**
* Implements hook_theme().
*/
function double_field_theme() : array {
$item = [
'render element' => 'elements',
];
return [
'double_field_item' => $item,
'double_field_subfield' => $item,
'double_field_definition_list' => $item,
];
}
/**
* Prepares variables for double-field-item template.
*/
function template_preprocess_double_field_item(array &$variables) : void {
$variables['settings'] = $variables['elements']['#settings'];
$variables['field_settings'] = $variables['elements']['#field_settings'];
$variables['item']['first'] = $variables['elements']['#item']->first;
$variables['item']['second'] = $variables['elements']['#item']->second;
}
/**
* Prepares variables for double-field-item template.
*/
function template_preprocess_double_field_subfield(array &$variables) : void {
$variables['index'] = $variables['elements']['#index'];
$variables['value'] = $variables['elements']['#subfield'];
}
/**
* Prepares variables for double-field-definition-list template.
*/
function template_preprocess_double_field_definition_list(array &$variables) : void {
$variables['settings'] = $variables['elements']['#settings'];
$variables['field_settings'] = $variables['elements']['#field_settings'];
$variables['items'] = $variables['elements']['#items'];
}
/**
* Implements hook_ENTITY_TYPE_update().
*/
function double_field_field_storage_config_update(EntityInterface $entity) : void {
/* @var \Drupal\field\Entity\FieldStorageConfig $entity */
if ($entity
->getType() == 'double_field') {
$settings = $entity
->getSettings();
$original_settings = $entity->original
->getSettings();
$first_type_is_changed = $settings['storage']['first']['type'] != $original_settings['storage']['first']['type'];
$second_type_is_changed = $settings['storage']['second']['type'] != $original_settings['storage']['second']['type'];
if ($first_type_is_changed || $second_type_is_changed) {
Drupal::messenger()
->addWarning(t('Since storage type has been changed you need to verify the configuration of corresponding widget on form display page.'));
}
}
}
/**
* Implements hook_validation_constraint_alter().
*/
function double_field_validation_constraint_alter(array &$definitions) : void {
// This constraint is required to test empty boolean values.
$definitions['NotEqualTo']['class'] = '\\Symfony\\Component\\Validator\\Constraints\\NotEqualTo';
}
/**
* Implements hook_theme_suggestions_HOOK().
*/
function double_field_theme_suggestions_double_field_item(array $variables) : array {
return [
'double_field_item__' . $variables['elements']['#field_name'],
];
}
/**
* Implements hook_theme_suggestions_HOOK().
*
* @todo remove this once the 'double-field-subfield.html.twig' is removed.
*/
function double_field_theme_suggestions_double_field_subfield(array $variables) : array {
return [
'double_field_subfield__' . $variables['elements']['#field_name'],
];
}
/**
* Implements hook_theme_suggestions_HOOK().
*/
function double_field_theme_suggestions_double_field_definition_list(array $variables) : array {
return [
'double_field_definition_list__' . $variables['elements']['#field_name'],
];
}
/**
* Implements hook_theme_suggestions_HOOK_alter().
*/
function double_field_theme_suggestions_item_list_alter(array &$suggestions, array $variables) : void {
$field_name = $variables['context']['double_field']['field_name'] ?? NULL;
if ($field_name) {
$suggestions[] = 'item_list__double_field__' . $field_name;
}
}
/**
* Implements hook_theme_suggestions_HOOK_alter().
*/
function double_field_theme_suggestions_table_alter(array &$suggestions, array $variables) : void {
$field_name = $variables['attributes']['double-field--field-name'] ?? NULL;
if ($field_name) {
$suggestions[] = 'table__double_field__' . $field_name;
}
}
Functions
Name | Description |
---|---|
double_field_field_storage_config_update | Implements hook_ENTITY_TYPE_update(). |
double_field_theme | Implements hook_theme(). |
double_field_theme_suggestions_double_field_definition_list | Implements hook_theme_suggestions_HOOK(). |
double_field_theme_suggestions_double_field_item | Implements hook_theme_suggestions_HOOK(). |
double_field_theme_suggestions_double_field_subfield | Implements hook_theme_suggestions_HOOK(). |
double_field_theme_suggestions_item_list_alter | Implements hook_theme_suggestions_HOOK_alter(). |
double_field_theme_suggestions_table_alter | Implements hook_theme_suggestions_HOOK_alter(). |
double_field_validation_constraint_alter | Implements hook_validation_constraint_alter(). |
template_preprocess_double_field_definition_list | Prepares variables for double-field-definition-list template. |
template_preprocess_double_field_item | Prepares variables for double-field-item template. |
template_preprocess_double_field_subfield | Prepares variables for double-field-item template. |