Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. ThemeController.php

function ThemeController::uninstall

Uninstalls a theme.

Parameters

\Symfony\Component\HttpFoundation\Request $request: A request object containing a theme name and a valid token.

Return value

\Symfony\Component\HttpFoundation\RedirectResponse Redirects back to the appearance admin page.

Throws

\Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException Throws access denied when no theme or token is set in the request or when the token is invalid.

1 string reference to 'ThemeController::uninstall'
system.routing.yml in core/modules/system/system.routing.yml
core/modules/system/system.routing.yml

File

core/modules/system/src/Controller/ThemeController.php, line 75

Class

ThemeController
Controller for theme handling.

Namespace

Drupal\system\Controller

Code

public function uninstall(Request $request) {
    $theme = $request->query
        ->get('theme');
    $config = $this->config('system.theme');
    if (isset($theme)) {
        // Get current list of themes.
        $themes = $this->themeHandler
            ->listInfo();
        // Check if the specified theme is one recognized by the system.
        if (!empty($themes[$theme])) {
            // Do not uninstall the default or admin theme.
            if ($theme === $config->get('default') || $theme === $config->get('admin')) {
                $this->messenger()
                    ->addError($this->t('%theme is the default theme and cannot be uninstalled.', [
                    '%theme' => $themes[$theme]->info['name'],
                ]));
            }
            else {
                $this->themeInstaller
                    ->uninstall([
                    $theme,
                ]);
                $this->messenger()
                    ->addStatus($this->t('The %theme theme has been uninstalled.', [
                    '%theme' => $themes[$theme]->info['name'],
                ]));
            }
        }
        else {
            $this->messenger()
                ->addError($this->t('The %theme theme was not found.', [
                '%theme' => $theme,
            ]));
        }
        return $this->redirect('system.themes_page');
    }
    throw new AccessDeniedHttpException();
}

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal