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

Breadcrumb

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

function ControllerResolver::getController

Same name in this branch
  1. 11.1.x core/lib/Drupal/Core/Controller/ControllerResolver.php \Drupal\Core\Controller\ControllerResolver::getController()

Throws

BadRequestException when the request has attribute "_check_controller_is_allowed" set to true and the controller is not allowed

Overrides ControllerResolverInterface::getController

File

vendor/symfony/http-kernel/Controller/ControllerResolver.php, line 54

Class

ControllerResolver
This implementation uses the '_controller' request attribute to determine the controller to execute.

Namespace

Symfony\Component\HttpKernel\Controller

Code

public function getController(Request $request) : callable|false {
    if (!($controller = $request->attributes
        ->get('_controller'))) {
        $this->logger?->warning('Unable to look for the controller as the "_controller" parameter is missing.');
        return false;
    }
    if (\is_array($controller)) {
        if (isset($controller[0]) && \is_string($controller[0]) && isset($controller[1])) {
            try {
                $controller[0] = $this->instantiateController($controller[0]);
            } catch (\Error|\LogicException $e) {
                if (\is_callable($controller)) {
                    return $this->checkController($request, $controller);
                }
                throw $e;
            }
        }
        if (!\is_callable($controller)) {
            throw new \InvalidArgumentException(\sprintf('The controller for URI "%s" is not callable: ', $request->getPathInfo()) . $this->getControllerError($controller));
        }
        return $this->checkController($request, $controller);
    }
    if (\is_object($controller)) {
        if (!\is_callable($controller)) {
            throw new \InvalidArgumentException(\sprintf('The controller for URI "%s" is not callable: ', $request->getPathInfo()) . $this->getControllerError($controller));
        }
        return $this->checkController($request, $controller);
    }
    if (\function_exists($controller)) {
        return $this->checkController($request, $controller);
    }
    try {
        $callable = $this->createController($controller);
    } catch (\InvalidArgumentException $e) {
        throw new \InvalidArgumentException(\sprintf('The controller for URI "%s" is not callable: ', $request->getPathInfo()) . $e->getMessage(), 0, $e);
    }
    if (!\is_callable($callable)) {
        throw new \InvalidArgumentException(\sprintf('The controller for URI "%s" is not callable: ', $request->getPathInfo()) . $this->getControllerError($callable));
    }
    return $this->checkController($request, $callable);
}

API Navigation

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