public function assemble($uri, array
$options =
[],
$collect_bubbleable_metadata = FALSE
) { // Note that UrlHelper::isExternal will return FALSE if the $uri has a
// disallowed protocol. This is later made safe since we always add at
// least a leading slash.
if (parse_url($uri, PHP_URL_SCHEME
) === 'base'
) { return $this->
buildLocalUrl($uri,
$options,
$collect_bubbleable_metadata);
} elseif (UrlHelper::
isExternal($uri)) { // UrlHelper::isExternal() only returns true for safe protocols.
return $this->
buildExternalUrl($uri,
$options,
$collect_bubbleable_metadata);
} throw new \
InvalidArgumentException("The URI '
$uri' is invalid. You must use a valid URI scheme. Use base: for a path, e.g., to a Drupal file that needs the base path. Do not use this for internal paths controlled by Drupal."
);
} /**
* {@inheritdoc}
*/
protected function buildExternalUrl($uri, array
$options =
[],
$collect_bubbleable_metadata = FALSE
) { $this->
addOptionDefaults($options);
// Split off the query & fragment.
$parsed = UrlHelper::
parse($uri);