function PathProcessorLanguage::initProcessors
Same name in other branches
- 9 core/modules/language/src/HttpKernel/PathProcessorLanguage.php \Drupal\language\HttpKernel\PathProcessorLanguage::initProcessors()
- 10 core/modules/language/src/HttpKernel/PathProcessorLanguage.php \Drupal\language\HttpKernel\PathProcessorLanguage::initProcessors()
- 11.x core/modules/language/src/HttpKernel/PathProcessorLanguage.php \Drupal\language\HttpKernel\PathProcessorLanguage::initProcessors()
Initializes the local cache for language path processors.
Parameters
string $scope: The scope of the processors: "inbound" or "outbound".
2 calls to PathProcessorLanguage::initProcessors()
- PathProcessorLanguage::processInbound in core/
modules/ language/ src/ HttpKernel/ PathProcessorLanguage.php - Processes the inbound path.
- PathProcessorLanguage::processOutbound in core/
modules/ language/ src/ HttpKernel/ PathProcessorLanguage.php - Processes the outbound path.
File
-
core/
modules/ language/ src/ HttpKernel/ PathProcessorLanguage.php, line 131
Class
- PathProcessorLanguage
- Processes the inbound path using path alias lookups.
Namespace
Drupal\language\HttpKernelCode
protected function initProcessors($scope) {
$interface = '\\Drupal\\Core\\PathProcessor\\' . Unicode::ucfirst($scope) . 'PathProcessorInterface';
$this->processors[$scope] = [];
$weights = [];
foreach ($this->languageManager
->getLanguageTypes() as $type) {
foreach ($this->negotiator
->getNegotiationMethods($type) as $method_id => $method) {
if (!isset($this->processors[$scope][$method_id])) {
$reflector = new \ReflectionClass($method['class']);
if ($reflector->implementsInterface($interface)) {
$this->processors[$scope][$method_id] = $this->negotiator
->getNegotiationMethodInstance($method_id);
$weights[$method_id] = $method['weight'];
}
}
}
}
// Sort the processors list, so that their functions are called in the
// order specified by the weight of the methods.
uksort($this->processors[$scope], function ($method_id_a, $method_id_b) use ($weights) {
$a_weight = $weights[$method_id_a];
$b_weight = $weights[$method_id_b];
if ($a_weight == $b_weight) {
return 0;
}
return $a_weight < $b_weight ? -1 : 1;
});
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.