public function AliasManager::getPathByAlias in Drupal 8
Given the alias, return the path it represents.
Parameters
string $alias: An alias.
string $langcode: An optional language code to look up the path in.
Return value
string The path represented by alias, or the alias if no path was found.
Throws
\InvalidArgumentException Thrown when the path does not start with a slash.
Overrides AliasManagerInterface::getPathByAlias
File
- core/
lib/ Drupal/ Core/ Path/ AliasManager.php, line 194
Class
- AliasManager
- The default alias manager implementation.
Namespace
Drupal\Core\PathCode
public function getPathByAlias($alias, $langcode = NULL) {
// If no language is explicitly specified we default to the current URL
// language. If we used a language different from the one conveyed by the
// requested URL, we might end up being unable to check if there is a path
// alias matching the URL path.
$langcode = $langcode ?: $this->languageManager
->getCurrentLanguage(LanguageInterface::TYPE_URL)
->getId();
// If we already know that there are no paths for this alias simply return.
if (empty($alias) || !empty($this->noPath[$langcode][$alias])) {
return $alias;
}
// Look for the alias within the cached map.
if (isset($this->lookupMap[$langcode]) && ($path = array_search($alias, $this->lookupMap[$langcode]))) {
return $path;
}
// Look for path in storage.
if ($path_alias = $this->pathAliasRepository
->lookupByAlias($alias, $langcode)) {
$this->lookupMap[$langcode][$path_alias['path']] = $alias;
return $path_alias['path'];
}
// We can't record anything into $this->lookupMap because we didn't find any
// paths for this alias. Thus cache to $this->noPath.
$this->noPath[$langcode][$alias] = TRUE;
return $alias;
}