AliasPathProcessor.php

Same filename and directory in other branches
  1. 9 core/modules/path_alias/src/PathProcessor/AliasPathProcessor.php
  2. 8.9.x core/modules/path_alias/src/PathProcessor/AliasPathProcessor.php
  3. 10 core/modules/path_alias/src/PathProcessor/AliasPathProcessor.php

Namespace

Drupal\path_alias\PathProcessor

File

core/modules/path_alias/src/PathProcessor/AliasPathProcessor.php

View source
<?php

namespace Drupal\path_alias\PathProcessor;

use Drupal\Core\PathProcessor\InboundPathProcessorInterface;
use Drupal\Core\PathProcessor\OutboundPathProcessorInterface;
use Drupal\Core\Render\BubbleableMetadata;
use Drupal\path_alias\AliasManagerInterface;
use Symfony\Component\HttpFoundation\Request;

/**
 * Processes the inbound path using path alias lookups.
 */
class AliasPathProcessor implements InboundPathProcessorInterface, OutboundPathProcessorInterface {
    
    /**
     * An alias manager for looking up the system path.
     *
     * @var \Drupal\path_alias\AliasManagerInterface
     */
    protected $aliasManager;
    
    /**
     * Constructs a AliasPathProcessor object.
     *
     * @param \Drupal\path_alias\AliasManagerInterface $alias_manager
     *   An alias manager for looking up the system path.
     */
    public function __construct(AliasManagerInterface $alias_manager) {
        $this->aliasManager = $alias_manager;
    }
    
    /**
     * {@inheritdoc}
     */
    public function processInbound($path, Request $request) {
        $path = $this->aliasManager
            ->getPathByAlias($path);
        return $path;
    }
    
    /**
     * {@inheritdoc}
     */
    public function processOutbound($path, &$options = [], ?Request $request = NULL, ?BubbleableMetadata $bubbleable_metadata = NULL) {
        if (empty($options['alias'])) {
            $langcode = isset($options['language']) ? $options['language']->getId() : NULL;
            $path = $this->aliasManager
                ->getAliasByPath($path, $langcode);
            // Ensure the resulting path has at most one leading slash, to prevent it
            // becoming an external URL without a protocol like //example.com. This
            // is done in \Drupal\Core\Routing\UrlGenerator::generateFromRoute()
            // also, to protect against this problem in arbitrary path processors,
            // but it is duplicated here to protect any other URL generation code
            // that might call this method separately.
            if (str_starts_with($path, '//')) {
                $path = '/' . ltrim($path, '/');
            }
        }
        return $path;
    }

}

Classes

Title Deprecated Summary
AliasPathProcessor Processes the inbound path using path alias lookups.

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