private function prepareAlias($alias, array &$parameters)
{
if ('index' === $alias) {
return;
}
$hasAutoItem = false;
$autoItems = $this->getAutoItems($parameters);
/** @var Config $config */
$config = $this->framework->getAdapter(Config::class);
$parameters['alias'] = preg_replace_callback('/\\{([^\\}]+)\\}/', function ($matches) use($alias, &$parameters, $autoItems, &$hasAutoItem, $config) {
$param = $matches[1];
if (!isset($parameters[$param])) {
throw new MissingMandatoryParametersException(sprintf('Parameters "%s" is missing to generate a URL for "%s"', $param, $alias));
}
$value = $parameters[$param];
unset($parameters[$param]);
if (!$config->get('useAutoItem') || $hasAutoItem || !in_array($param, $autoItems, true)) {
return $param . '/' . $value;
}
$hasAutoItem = true;
return $value;
}, $alias);
}