class AdminNegotiator
Sets the active theme on admin pages.
Hierarchy
- class \Drupal\user\Theme\AdminNegotiator implements \Drupal\Core\Theme\ThemeNegotiatorInterface
 
Expanded class hierarchy of AdminNegotiator
1 file declares its use of AdminNegotiator
- AdminNegotiatorTest.php in core/
modules/ user/ tests/ src/ Unit/ Theme/ AdminNegotiatorTest.php  
1 string reference to 'AdminNegotiator'
- user.services.yml in core/
modules/ user/ user.services.yml  - core/modules/user/user.services.yml
 
1 service uses AdminNegotiator
- theme.negotiator.admin_theme in core/
modules/ user/ user.services.yml  - Drupal\user\Theme\AdminNegotiator
 
File
- 
              core/
modules/ user/ src/ Theme/ AdminNegotiator.php, line 15  
Namespace
Drupal\user\ThemeView source
class AdminNegotiator implements ThemeNegotiatorInterface {
  
  /**
   * The current user.
   *
   * @var \Drupal\Core\Session\AccountInterface
   */
  protected $user;
  
  /**
   * The config factory.
   *
   * @var \Drupal\Core\Config\ConfigFactoryInterface
   */
  protected $configFactory;
  
  /**
   * The entity type manager.
   *
   * @var \Drupal\Core\Entity\EntityTypeManagerInterface
   */
  protected $entityTypeManager;
  
  /**
   * The route admin context to determine whether a route is an admin one.
   *
   * @var \Drupal\Core\Routing\AdminContext
   */
  protected $adminContext;
  
  /**
   * Creates a new AdminNegotiator instance.
   *
   * @param \Drupal\Core\Session\AccountInterface $user
   *   The current user.
   * @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory
   *   The config factory.
   * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
   *   The entity type manager.
   * @param \Drupal\Core\Routing\AdminContext $admin_context
   *   The route admin context to determine whether the route is an admin one.
   */
  public function __construct(AccountInterface $user, ConfigFactoryInterface $config_factory, EntityTypeManagerInterface $entity_type_manager, AdminContext $admin_context) {
    $this->user = $user;
    $this->configFactory = $config_factory;
    $this->entityTypeManager = $entity_type_manager;
    $this->adminContext = $admin_context;
  }
  
  /**
   * {@inheritdoc}
   */
  public function applies(RouteMatchInterface $route_match) {
    return $this->entityTypeManager
      ->hasHandler('user_role', 'storage') && $this->user
      ->hasPermission('view the administration theme') && $this->adminContext
      ->isAdminRoute($route_match->getRouteObject());
  }
  
  /**
   * {@inheritdoc}
   */
  public function determineActiveTheme(RouteMatchInterface $route_match) {
    return $this->configFactory
      ->get('system.theme')
      ->get('admin') ?: NULL;
  }
}
Members
| Title Sort descending | Modifiers | Object type | Summary | Overriden Title | 
|---|---|---|---|---|
| AdminNegotiator::$adminContext | protected | property | The route admin context to determine whether a route is an admin one. | |
| AdminNegotiator::$configFactory | protected | property | The config factory. | |
| AdminNegotiator::$entityTypeManager | protected | property | The entity type manager. | |
| AdminNegotiator::$user | protected | property | The current user. | |
| AdminNegotiator::applies | public | function | Whether this theme negotiator should be used to set the theme. | Overrides ThemeNegotiatorInterface::applies | 
| AdminNegotiator::determineActiveTheme | public | function | Determine the active theme for the request. | Overrides ThemeNegotiatorInterface::determineActiveTheme | 
| AdminNegotiator::__construct | public | function | Creates a new AdminNegotiator instance. | 
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.