You are here

protected function UnroutedUrlAssembler::addOptionDefaults in Drupal 9

Same name and namespace in other branches
  1. 8 core/lib/Drupal/Core/Utility/UnroutedUrlAssembler.php \Drupal\Core\Utility\UnroutedUrlAssembler::addOptionDefaults()

Merges in default defaults.

Parameters

array $options: The options to merge in the defaults.

2 calls to UnroutedUrlAssembler::addOptionDefaults()
UnroutedUrlAssembler::buildExternalUrl in core/lib/Drupal/Core/Utility/UnroutedUrlAssembler.php
UnroutedUrlAssembler::buildLocalUrl in core/lib/Drupal/Core/Utility/UnroutedUrlAssembler.php

File

core/lib/Drupal/Core/Utility/UnroutedUrlAssembler.php, line 170

Class

UnroutedUrlAssembler
Provides a way to build external or non Drupal local domain URLs.

Namespace

Drupal\Core\Utility

Code

protected function addOptionDefaults(array &$options) {
  $request = $this->requestStack
    ->getCurrentRequest();
  $current_base_path = $request
    ->getBasePath() . '/';
  $current_script_path = '';
  $base_path_with_script = $request
    ->getBaseUrl();

  // If the current request was made with the script name (eg, index.php) in
  // it, then extract it, making sure the leading / is gone, and a trailing /
  // is added, to allow simple string concatenation with other parts.
  if (!empty($base_path_with_script)) {
    $script_name = $request
      ->getScriptName();
    if (strpos($base_path_with_script, $script_name) !== FALSE) {
      $current_script_path = ltrim(substr($script_name, strlen($current_base_path)), '/') . '/';
    }
  }

  // Merge in defaults.
  $options += [
    'fragment' => '',
    'query' => [],
    'absolute' => FALSE,
    'prefix' => '',
    'script' => $current_script_path,
  ];
  if (isset($options['fragment']) && $options['fragment'] !== '') {
    $options['fragment'] = '#' . $options['fragment'];
  }
}