FieldUiRouteEnhancer.php

Same filename in other branches
  1. 9 core/modules/field_ui/src/Routing/FieldUiRouteEnhancer.php

Namespace

Drupal\field_ui\Routing

File

core/modules/field_ui/src/Routing/FieldUiRouteEnhancer.php

View source
<?php

namespace Drupal\field_ui\Routing;

use Drupal\Core\DependencyInjection\DeprecatedServicePropertyTrait;
use Drupal\Core\Routing\EnhancerInterface;
use Symfony\Cmf\Component\Routing\RouteObjectInterface;
use Drupal\Core\Entity\EntityTypeManagerInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Route;

/**
 * Enhances Field UI routes by adding proper information about the bundle name.
 */
class FieldUiRouteEnhancer implements EnhancerInterface {
    use DeprecatedServicePropertyTrait;
    
    /**
     * {@inheritdoc}
     */
    protected $deprecatedProperties = [
        'entityManager' => 'entity.manager',
    ];
    
    /**
     * The entity type manager service.
     *
     * @var \Drupal\Core\Entity\EntityTypeManagerInterface
     */
    protected $entityTypeManager;
    
    /**
     * Constructs a FieldUiRouteEnhancer object.
     *
     * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
     *   The entity type manager service.
     */
    public function __construct(EntityTypeManagerInterface $entity_type_manager) {
        $this->entityTypeManager = $entity_type_manager;
    }
    
    /**
     * {@inheritdoc}
     */
    public function enhance(array $defaults, Request $request) {
        if (!$this->applies($defaults[RouteObjectInterface::ROUTE_OBJECT])) {
            return $defaults;
        }
        if (($bundle = $this->entityTypeManager
            ->getDefinition($defaults['entity_type_id'])
            ->getBundleEntityType()) && isset($defaults[$bundle])) {
            // Field UI forms only need the actual name of the bundle they're dealing
            // with, not an upcasted entity object, so provide a simple way for them
            // to get it.
            $defaults['bundle'] = $defaults['_raw_variables']->get($bundle);
        }
        return $defaults;
    }
    
    /**
     * {@inheritdoc}
     */
    protected function applies(Route $route) {
        return $route->hasOption('_field_ui');
    }

}

Classes

Title Deprecated Summary
FieldUiRouteEnhancer Enhances Field UI routes by adding proper information about the bundle name.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.