public function AliasStorage::save in Drupal 8
Saves a path alias to the database.
@thrown \InvalidArgumentException Thrown when either the source or alias has not a starting slash.
Parameters
string $source: The internal system path.
string $alias: The URL alias.
string $langcode: (optional) The language code of the alias.
int|null $pid: (optional) Unique path alias identifier.
Return value
array|false FALSE if the path could not be saved or an associative array containing the following keys:
- source (string): The internal system path with a starting slash.
- alias (string): The URL alias with a starting slash.
- pid (int): Unique path alias identifier.
- langcode (string): The language code of the alias.
- original: For updates, an array with source, alias and langcode with the previous values.
Overrides AliasStorageInterface::save
File
- core/
lib/ Drupal/ Core/ Path/ AliasStorage.php, line 75
Class
- AliasStorage
- Provides a class for CRUD operations on path aliases.
Namespace
Drupal\Core\PathCode
public function save($source, $alias, $langcode = LanguageInterface::LANGCODE_NOT_SPECIFIED, $pid = NULL) {
if ($source[0] !== '/') {
throw new \InvalidArgumentException(sprintf('Source path %s has to start with a slash.', $source));
}
if ($alias[0] !== '/') {
throw new \InvalidArgumentException(sprintf('Alias path %s has to start with a slash.', $alias));
}
if ($pid) {
/** @var \Drupal\path_alias\PathAliasInterface $path_alias */
$path_alias = $this
->getPathAliasEntityStorage()
->load($pid);
$original_values = [
'source' => $path_alias
->getPath(),
'alias' => $path_alias
->getAlias(),
'langcode' => $path_alias
->get('langcode')->value,
];
$path_alias
->setPath($source);
$path_alias
->setAlias($alias);
$path_alias
->set('langcode', $langcode);
}
else {
$path_alias = $this
->getPathAliasEntityStorage()
->create([
'path' => $source,
'alias' => $alias,
'langcode' => $langcode,
]);
}
$path_alias
->save();
$path_alias_values = [
'pid' => $path_alias
->id(),
'source' => $path_alias
->getPath(),
'alias' => $path_alias
->getAlias(),
'langcode' => $path_alias
->get('langcode')->value,
];
if (isset($original_values)) {
$path_alias_values['original'] = $original_values;
}
return $path_alias_values;
}