class AddressDisplayFormatter in Address Display 8
Plugin implementation of the 'Address Display' formatter.
Plugin annotation
@FieldFormatter(
id = "address_display_formatter",
label = @Translation("Address Display"),
field_types = {
"address"
}
)
Hierarchy
- class \Drupal\Component\Plugin\PluginBase implements DerivativeInspectionInterface, PluginInspectionInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
- class \Drupal\Core\Field\PluginSettingsBase implements DependentPluginInterface, PluginSettingsInterface
- class \Drupal\Core\Field\FormatterBase implements FormatterInterface, ContainerFactoryPluginInterface
- class \Drupal\address\Plugin\Field\FieldFormatter\AddressPlainFormatter implements ContainerFactoryPluginInterface
- class \Drupal\address_display\Plugin\Field\FieldFormatter\AddressDisplayFormatter
- class \Drupal\address\Plugin\Field\FieldFormatter\AddressPlainFormatter implements ContainerFactoryPluginInterface
- class \Drupal\Core\Field\FormatterBase implements FormatterInterface, ContainerFactoryPluginInterface
- class \Drupal\Core\Field\PluginSettingsBase implements DependentPluginInterface, PluginSettingsInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
Expanded class hierarchy of AddressDisplayFormatter
File
- src/
Plugin/ Field/ FieldFormatter/ AddressDisplayFormatter.php, line 21
Namespace
Drupal\address_display\Plugin\Field\FieldFormatterView source
class AddressDisplayFormatter extends AddressPlainFormatter {
/**
* {@inheritdoc}
*/
public static function defaultSettings() {
$settings = [
'address_display' => [
'organization' => [
'display' => TRUE,
'glue' => '',
'weight' => -1,
],
'address_line1' => [
'display' => TRUE,
'glue' => '',
'weight' => 0,
],
'address_line2' => [
'display' => TRUE,
'glue' => ',',
'weight' => 1,
],
'locality' => [
'display' => TRUE,
'glue' => ',',
'weight' => 2,
],
'postal_code' => [
'display' => TRUE,
'glue' => '',
'weight' => 3,
],
'country_code' => [
'display' => TRUE,
'glue' => '',
'weight' => 4,
],
'langcode' => [
'display' => FALSE,
'glue' => ',',
'weight' => 100,
],
'administrative_area' => [
'display' => FALSE,
'glue' => ',',
'weight' => 100,
],
'dependent_locality' => [
'display' => FALSE,
'glue' => ',',
'weight' => 100,
],
'sorting_code' => [
'display' => FALSE,
'glue' => ',',
'weight' => 100,
],
'given_name' => [
'display' => TRUE,
'glue' => '',
'weight' => 100,
],
'family_name' => [
'display' => TRUE,
'glue' => ',',
'weight' => 100,
],
],
];
return $settings + parent::defaultSettings();
}
/**
* Helper function to get address components label.
*
* @return array
*/
private function getLabels() {
$values = LabelHelper::getGenericFieldLabels();
return [
'given_name' => $values['givenName'],
'additional_name' => $values['additionalName'],
'family_name' => $values['familyName'],
'organization' => $values['organization'],
'address_line1' => $values['addressLine1'],
'address_line2' => $values['addressLine2'],
'postal_code' => $values['postalCode'],
'sorting_code' => $values['sortingCode'],
'administrative_area' => $values['administrativeArea'],
'locality' => $values['locality'],
'dependent_locality' => $values['dependentLocality'],
'country_code' => $this
->t('Country code'),
'langcode' => $this
->t('Langcode'),
];
}
/**
* {@inheritdoc}
*/
public function settingsForm(array $form, FormStateInterface $form_state) {
$form = parent::settingsForm($form, $form_state);
$labels = $this
->getLabels();
$group_class = 'group-order-weight';
$items = $this
->getSetting('address_display');
// Build table.
$form['address_display'] = [
'#type' => 'table',
'#caption' => $this
->t('Address display'),
'#header' => [
$this
->t('Label'),
$this
->t('Display'),
$this
->t('Glue'),
$this
->t('Weight'),
],
'#empty' => $this
->t('No items.'),
'#tableselect' => FALSE,
'#tabledrag' => [
[
'action' => 'order',
'relationship' => 'sibling',
'group' => $group_class,
],
],
];
// Build rows.
foreach ($items as $key => $value) {
$form['address_display'][$key]['#attributes']['class'][] = 'draggable';
$form['address_display'][$key]['#weight'] = $value['weight'];
// Label col.
$form['address_display'][$key]['label'] = [
'#plain_text' => $labels[$key],
];
// ID col.
$form['address_display'][$key]['display'] = [
'#type' => 'checkbox',
'#title' => $this
->t('Display'),
'#default_value' => $value['display'],
];
// Glue col.
$form['address_display'][$key]['glue'] = [
'#type' => 'textfield',
'#title' => $this
->t('Glue'),
'#default_value' => $value['glue'],
];
// Weight col.
$form['address_display'][$key]['weight'] = [
'#type' => 'weight',
'#title' => $this
->t('Weight for @title', [
'@title' => $key,
]),
'#title_display' => 'invisible',
'#default_value' => $value['weight'],
'#attributes' => [
'class' => [
$group_class,
],
],
];
}
return $form;
}
/**
* {@inheritdoc}
*/
public function settingsSummary() {
$config = $this
->getSetting('address_display');
$labels = $this
->getLabels();
$summary = [];
$display = [];
foreach ($config as $key => $config_item) {
if ($config_item['display']) {
$display[] = $labels[$key];
}
}
if (!empty($display)) {
$summary[] = $this
->t('Display: @elements', [
'@elements' => implode(', ', $display),
]);
}
return $summary;
}
/**
* {@inheritdoc}
*/
public function viewElements(FieldItemListInterface $items, $langcode) {
$elements = [];
foreach ($items as $delta => $item) {
$children = $this
->prepareAddressDisplay($item
->toArray());
if (empty($children)) {
continue;
}
$elements[$delta] = [
'#type' => 'container',
'#children' => $children,
];
}
return $elements;
}
/**
* Prepare render array with address components.
*
* @param array $item
* Address values.
*
* @return array
* Render array.
*/
private function prepareAddressDisplay(array $item) {
$config = $this
->getSetting('address_display');
$countries = $this->countryRepository
->getList();
$elements = [];
// Skip hidden or empty items.
foreach ($config as $key => $config_item) {
if (!$config_item['display'] || empty($item[$key])) {
unset($config[$key]);
}
}
if (empty($config)) {
return [];
}
// The key of the last displayed item.
$last_key = array_keys($config)[count($config) - 1];
foreach ($config as $key => $config_item) {
if ($key == 'country_code') {
$item[$key] = $countries[$item[$key]];
}
// Don't display the 'glue' separator for the last item.
if ($key == $last_key) {
$config_item['glue'] = '';
}
$elements[$key] = [
'#type' => 'html_tag',
'#tag' => 'span',
'#attributes' => [
'class' => [
'address-display-element',
str_replace('_', '-', $key) . '-element',
],
],
'#value' => $item[$key] . $config_item['glue'],
];
}
return $elements;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
AddressDisplayFormatter:: |
public static | function |
Defines the default settings for this plugin. Overrides PluginSettingsBase:: |
|
AddressDisplayFormatter:: |
private | function | Helper function to get address components label. | |
AddressDisplayFormatter:: |
private | function | Prepare render array with address components. | |
AddressDisplayFormatter:: |
public | function |
Returns a form to configure settings for the formatter. Overrides FormatterBase:: |
|
AddressDisplayFormatter:: |
public | function |
Returns a short summary for the current formatter settings. Overrides FormatterBase:: |
|
AddressDisplayFormatter:: |
public | function |
Builds a renderable array for a field value. Overrides AddressPlainFormatter:: |
|
AddressPlainFormatter:: |
protected | property | The address format repository. | |
AddressPlainFormatter:: |
protected | property | The country repository. | |
AddressPlainFormatter:: |
protected | property | The subdivision repository. | |
AddressPlainFormatter:: |
public static | function |
Creates an instance of the plugin. Overrides FormatterBase:: |
|
AddressPlainFormatter:: |
protected | function | Gets the address values used for rendering. | |
AddressPlainFormatter:: |
protected | function | Builds a renderable array for a single address item. | |
AddressPlainFormatter:: |
public | function |
Constructs an AddressPlainFormatter object. Overrides FormatterBase:: |
|
DependencySerializationTrait:: |
protected | property | An array of entity type IDs keyed by the property name of their storages. | |
DependencySerializationTrait:: |
protected | property | An array of service IDs keyed by property name used for serialization. | |
DependencySerializationTrait:: |
public | function | 1 | |
DependencySerializationTrait:: |
public | function | 2 | |
FormatterBase:: |
protected | property | The field definition. | |
FormatterBase:: |
protected | property | The label display setting. | |
FormatterBase:: |
protected | property |
The formatter settings. Overrides PluginSettingsBase:: |
|
FormatterBase:: |
protected | property | The view mode. | |
FormatterBase:: |
protected | function | Returns the value of a field setting. | |
FormatterBase:: |
protected | function | Returns the array of field settings. | |
FormatterBase:: |
public static | function |
Returns if the formatter can be used for the provided field. Overrides FormatterInterface:: |
14 |
FormatterBase:: |
public | function |
Allows formatters to load information for field values being displayed. Overrides FormatterInterface:: |
2 |
FormatterBase:: |
public | function |
Builds a renderable array for a fully themed field. Overrides FormatterInterface:: |
1 |
MessengerTrait:: |
protected | property | The messenger. | 29 |
MessengerTrait:: |
public | function | Gets the messenger. | 29 |
MessengerTrait:: |
public | function | Sets the messenger. | |
PluginBase:: |
protected | property | Configuration information passed into the plugin. | 1 |
PluginBase:: |
protected | property | The plugin implementation definition. | 1 |
PluginBase:: |
protected | property | The plugin_id. | |
PluginBase:: |
constant | A string which is used to separate base plugin IDs from the derivative ID. | ||
PluginBase:: |
public | function |
Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the definition of the plugin implementation. Overrides PluginInspectionInterface:: |
3 |
PluginBase:: |
public | function |
Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface:: |
|
PluginBase:: |
public | function | Determines if the plugin is configurable. | |
PluginSettingsBase:: |
protected | property | Whether default settings have been merged into the current $settings. | |
PluginSettingsBase:: |
protected | property | The plugin settings injected by third party modules. | |
PluginSettingsBase:: |
public | function |
Calculates dependencies for the configured plugin. Overrides DependentPluginInterface:: |
6 |
PluginSettingsBase:: |
public | function |
Returns the value of a setting, or its default value if absent. Overrides PluginSettingsInterface:: |
|
PluginSettingsBase:: |
public | function |
Returns the array of settings, including defaults for missing settings. Overrides PluginSettingsInterface:: |
|
PluginSettingsBase:: |
public | function |
Gets the list of third parties that store information. Overrides ThirdPartySettingsInterface:: |
|
PluginSettingsBase:: |
public | function |
Gets the value of a third-party setting. Overrides ThirdPartySettingsInterface:: |
|
PluginSettingsBase:: |
public | function |
Gets all third-party settings of a given module. Overrides ThirdPartySettingsInterface:: |
|
PluginSettingsBase:: |
protected | function | Merges default settings values into $settings. | |
PluginSettingsBase:: |
public | function |
Informs the plugin that some configuration it depends on will be deleted. Overrides PluginSettingsInterface:: |
3 |
PluginSettingsBase:: |
public | function |
Sets the value of a setting for the plugin. Overrides PluginSettingsInterface:: |
|
PluginSettingsBase:: |
public | function |
Sets the settings for the plugin. Overrides PluginSettingsInterface:: |
|
PluginSettingsBase:: |
public | function |
Sets the value of a third-party setting. Overrides ThirdPartySettingsInterface:: |
|
PluginSettingsBase:: |
public | function |
Unsets a third-party setting. Overrides ThirdPartySettingsInterface:: |
|
StringTranslationTrait:: |
protected | property | The string translation service. | 1 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. |