public function MachineNameController::transliterate in Drupal 9
Same name and namespace in other branches
- 8 core/modules/system/src/MachineNameController.php \Drupal\system\MachineNameController::transliterate()
Transliterates a string in given language. Various postprocessing possible.
Parameters
\Symfony\Component\HttpFoundation\Request $request: The input string and language for the transliteration. Optionally may contain the replace_pattern, replace, lowercase parameters.
Return value
\Symfony\Component\HttpFoundation\JsonResponse The transliterated string.
1 string reference to 'MachineNameController::transliterate'
- system.routing.yml in core/
modules/ system/ system.routing.yml - core/modules/system/system.routing.yml
File
- core/
modules/ system/ src/ MachineNameController.php, line 65
Class
- MachineNameController
- Controller routines for machine name transliteration routes.
Namespace
Drupal\systemCode
public function transliterate(Request $request) {
$text = $request->query
->get('text');
$langcode = $request->query
->get('langcode');
$replace_pattern = $request->query
->get('replace_pattern');
$replace_token = $request->query
->get('replace_token');
$replace = $request->query
->get('replace');
$lowercase = $request->query
->get('lowercase');
$transliterated = $this->transliteration
->transliterate($text, $langcode, '_');
if ($lowercase) {
$transliterated = mb_strtolower($transliterated);
}
if (isset($replace_pattern) && isset($replace)) {
if (!isset($replace_token)) {
throw new AccessDeniedHttpException("Missing 'replace_token' query parameter.");
}
elseif (!$this->tokenGenerator
->validate($replace_token, $replace_pattern)) {
throw new AccessDeniedHttpException("Invalid 'replace_token' query parameter.");
}
// Quote the pattern delimiter and remove null characters to avoid the e
// or other modifiers being injected.
$transliterated = preg_replace('@' . strtr($replace_pattern, [
'@' => '\\@',
chr(0) => '',
]) . '@', $replace, $transliterated);
}
return new JsonResponse($transliterated);
}