message-8.x-1.1/src/MessageViewBuilder.php

src/MessageViewBuilder.php
<?php

namespace Drupal\message;

use Drupal\Core\Entity\Display\EntityViewDisplayInterface;
use Drupal\Core\Entity\Entity\EntityViewDisplay;
use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Entity\EntityViewBuilder;

/**
 * Render controller for Messages.
 */
class MessageViewBuilder extends EntityViewBuilder {

  /**
   * {@inheritdoc}
   */
  public function view(EntityInterface $entity, $view_mode = 'full', $langcode = NULL) {
    $build = parent::view($entity, $view_mode, $langcode);

    /** @var \Drupal\message\Entity\Message $entity  */
    $partials = $entity->getText($langcode);

    // Get the partials the user selected for the current view mode.
    $extra_fields = EntityViewDisplay::load('message.' . $entity->bundle() . '.' . $build['#view_mode']);
    if (!$extra_fields instanceof EntityViewDisplayInterface) {
      $extra_fields = EntityViewDisplay::create([
        'targetEntityType' => 'message',
        'bundle' => $entity->bundle(),
        'mode' => $view_mode,
        'status' => TRUE,
      ]);
    }

    foreach ($extra_fields->getComponents() as $field_name => $settings) {
      // The partials are keyed with `partial_X`, check if that is set.
      if (strpos($field_name, 'partial_') === 0) {
        [, $delta] = explode('_', $field_name);
        if (isset($partials[$delta])) {
          $build[$field_name]['#markup'] = $partials[$delta];
        }
      }
      else {
        // This is another field.
        $display = $this->getSingleFieldDisplay($entity, $field_name, $settings);
        $build += $display->build($entity);
      }
    }

    return $build;
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc