You are here

public function DevelLocalTask::getDerivativeDefinitions in Devel 8

Same name and namespace in other branches
  1. 8.3 src/Plugin/Derivative/DevelLocalTask.php \Drupal\devel\Plugin\Derivative\DevelLocalTask::getDerivativeDefinitions()
  2. 8.2 src/Plugin/Derivative/DevelLocalTask.php \Drupal\devel\Plugin\Derivative\DevelLocalTask::getDerivativeDefinitions()
  3. 4.x src/Plugin/Derivative/DevelLocalTask.php \Drupal\devel\Plugin\Derivative\DevelLocalTask::getDerivativeDefinitions()

Gets the definition of all derivatives of a base plugin.

Parameters

array $base_plugin_definition: The definition array of the base plugin.

Return value

array An array of full derivative definitions keyed on derivative id.

Overrides DeriverBase::getDerivativeDefinitions

See also

getDerivativeDefinition()

File

src/Plugin/Derivative/DevelLocalTask.php, line 55

Class

DevelLocalTask
Provides local task definitions for all entity bundles.

Namespace

Drupal\devel\Plugin\Derivative

Code

public function getDerivativeDefinitions($base_plugin_definition) {
  $this->derivatives = [];
  foreach ($this->entityTypeManager
    ->getDefinitions() as $entity_type_id => $entity_type) {
    $has_edit_path = $entity_type
      ->hasLinkTemplate('devel-load');
    $has_canonical_path = $entity_type
      ->hasLinkTemplate('devel-render');
    if ($has_edit_path || $has_canonical_path) {
      $this->derivatives["{$entity_type_id}.devel_tab"] = [
        'route_name' => "entity.{$entity_type_id}." . ($has_edit_path ? 'devel_load' : 'devel_render'),
        'title' => $this
          ->t('Devel'),
        'base_route' => "entity.{$entity_type_id}." . ($has_canonical_path ? "canonical" : "edit_form"),
        'weight' => 100,
      ];
      $this->derivatives["{$entity_type_id}.devel_definition_tab"] = [
        'route_name' => "entity.{$entity_type_id}.devel_definition",
        'title' => $this
          ->t('Definition'),
        'parent_id' => "devel.entities:{$entity_type_id}.devel_tab",
        'weight' => 100,
      ];
      if ($has_canonical_path) {
        $this->derivatives["{$entity_type_id}.devel_render_tab"] = [
          'route_name' => "entity.{$entity_type_id}.devel_render",
          'weight' => 100,
          'title' => $this
            ->t('Render'),
          'parent_id' => "devel.entities:{$entity_type_id}.devel_tab",
        ];
      }
      if ($has_edit_path) {
        $this->derivatives["{$entity_type_id}.devel_load_tab"] = [
          'route_name' => "entity.{$entity_type_id}.devel_load",
          'weight' => 100,
          'title' => $this
            ->t('Load'),
          'parent_id' => "devel.entities:{$entity_type_id}.devel_tab",
        ];
      }
    }
  }
  foreach ($this->derivatives as &$entry) {
    $entry += $base_plugin_definition;
  }
  return $this->derivatives;
}