You are here

public function ContryStateCityFormatter::viewElements in Country, State and City Fields 8

Builds a renderable array for a field value.

Parameters

\Drupal\Core\Field\FieldItemListInterface $items: The field values to be rendered.

string $langcode: The language that should be used to render the field.

Return value

array A renderable array for $items, as an array of child elements keyed by consecutive numeric indexes starting from 0.

Overrides FormatterInterface::viewElements

File

src/Plugin/Field/FieldFormatter/ContryStateCityFormatter.php, line 108

Class

ContryStateCityFormatter
Plugin implementation of the 'contry_state_city_formatter' formatter.

Namespace

Drupal\country_state_city\Plugin\Field\FieldFormatter

Code

public function viewElements(FieldItemListInterface $items, $langcode) {
  $elements = [];
  foreach ($items as $delta => $item) {
    $values = $item
      ->getValue();
    $country = $this->entityTypeManager
      ->getStorage('countrylist')
      ->load($values['country']);
    $state = $this->entityTypeManager
      ->getStorage('statelist')
      ->load($values['state']);
    $city = $this->entityTypeManager
      ->getStorage('citylist')
      ->load($values['city']);
    $elements[$delta] = [
      '#markup' => $this
        ->viewValue($item),
      '#theme' => 'country_state_city',
      '#country' => !is_null($country) ? !empty($country
        ->hasTranslation($langcode)) ? $country
        ->getTranslation($langcode)
        ->getName() : $country
        ->getName() : '',
      '#state' => !is_null($state) ? !empty($state
        ->hasTranslation($langcode)) ? $state
        ->getTranslation($langcode)
        ->getName() : $state
        ->getName() : '',
      '#city' => !is_null($city) ? !empty($city
        ->hasTranslation($langcode)) ? $city
        ->getTranslation($langcode)
        ->getName() : $city
        ->getName() : '',
    ];
  }
  return $elements;
}