eav_field-2.x-dev/src/Plugin/Derivative/EavFieldLocalTaskDeriver.php

src/Plugin/Derivative/EavFieldLocalTaskDeriver.php
<?php

namespace Drupal\eav_field\Plugin\Derivative;

use Drupal\Component\Plugin\Derivative\DeriverBase;
use Drupal\Core\Entity\EntityFieldManagerInterface;

class EavFieldLocalTaskDeriver extends DeriverBase {

  /**
   * {@inheritDoc}
   */
  public function getDerivativeDefinitions($base_plugin_definition): array {
    $entity_field_manger = \Drupal::service('entity_field.manager'); /** @var EntityFieldManagerInterface $entity_field_manger */
    $eav_fields_map = $entity_field_manger->getFieldMapByFieldType('eav');

    foreach ($eav_fields_map as $entity_type_id => $eav_fields) {
      foreach ($eav_fields as $eav_field_name => $eav_field_info) {
        $entity_bundle_name = current($eav_field_info['bundles']);
        $eav_field_label = \Drupal::service('entity_field.manager')->getFieldDefinitions($entity_type_id, $entity_bundle_name)[$eav_field_name]->getLabel();

        $this->derivatives[$entity_type_id . '_' . $eav_field_name] = [
          'title' => t('Edit @label', ['@label' => mb_strtolower($eav_field_label)]),
          'route_name' => "entity.$entity_type_id.edit_eav",
          'route_parameters' => ['field_name' => $eav_field_name],
          'base_route' => "entity.$entity_type_id.canonical",
          'weight' => 20,
        ] + $base_plugin_definition;
      }
    }

    return parent::getDerivativeDefinitions($base_plugin_definition);
  }

}

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

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