function PathProcessorFront::processInbound

Same name and namespace in other branches
  1. 9 core/lib/Drupal/Core/PathProcessor/PathProcessorFront.php \Drupal\Core\PathProcessor\PathProcessorFront::processInbound()
  2. 8.9.x core/lib/Drupal/Core/PathProcessor/PathProcessorFront.php \Drupal\Core\PathProcessor\PathProcessorFront::processInbound()
  3. 10 core/lib/Drupal/Core/PathProcessor/PathProcessorFront.php \Drupal\Core\PathProcessor\PathProcessorFront::processInbound()

Overrides InboundPathProcessorInterface::processInbound

File

core/lib/Drupal/Core/PathProcessor/PathProcessorFront.php, line 34

Class

PathProcessorFront
Processes the inbound path by resolving it to the front page if empty.

Namespace

Drupal\Core\PathProcessor

Code

public function processInbound($path, Request $request) {
    if ($path === '/') {
        $path = $this->config
            ->get('system.site')
            ->get('page.front');
        if (empty($path)) {
            // We have to return a valid path but / does not have a route and config
            // might be broken so stop execution.
            throw new NotFoundHttpException();
        }
        $components = parse_url($path);
        // Remove query string and fragment.
        $path = $components['path'];
        // Merge query parameters from front page configuration value
        // with URL query, so that actual URL takes precedence.
        if (!empty($components['query'])) {
            parse_str($components['query'], $parameters);
            array_replace($parameters, $request->query
                ->all());
            $request->query
                ->replace($parameters);
        }
    }
    return $path;
}

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