Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 2 |
CRAP | |
0.00% |
0 / 23 |
| RouteProcessorCurrent | |
0.00% |
0 / 1 |
|
0.00% |
0 / 2 |
30 | |
0.00% |
0 / 23 |
| __construct | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
| processOutbound | |
0.00% |
0 / 1 |
20 | |
0.00% |
0 / 21 |
|||
| <?php | |
| /** | |
| * @file | |
| * Contains \Drupal\Core\RouteProcessor\RouteProcessorCurrent. | |
| */ | |
| namespace Drupal\Core\RouteProcessor; | |
| use Drupal\Core\Render\BubbleableMetadata; | |
| use Drupal\Core\Routing\RouteMatchInterface; | |
| use Symfony\Component\Routing\Route; | |
| /** | |
| * Provides a route processor to replace <current>. | |
| */ | |
| class RouteProcessorCurrent implements OutboundRouteProcessorInterface { | |
| /** | |
| * The current route match. | |
| * | |
| * @var \Drupal\Core\Routing\RouteMatchInterface | |
| */ | |
| protected $routeMatch; | |
| /** | |
| * Constructs a new RouteProcessorCurrent. | |
| * | |
| * @param \Drupal\Core\Routing\RouteMatchInterface $route_match | |
| * The current route match. | |
| */ | |
| public function __construct(RouteMatchInterface $route_match) { | |
| $this->routeMatch = $route_match; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function processOutbound($route_name, Route $route, array &$parameters, BubbleableMetadata $bubbleable_metadata = NULL) { | |
| if ($route_name === '<current>') { | |
| if ($current_route = $this->routeMatch->getRouteObject()) { | |
| $requirements = $current_route->getRequirements(); | |
| // Setting _method and _schema is deprecated since 2.7. Using | |
| // setMethods() and setSchemes() are now the recommended ways. | |
| unset($requirements['_method']); | |
| unset($requirements['_schema']); | |
| $route->setRequirements($requirements); | |
| $route->setPath($current_route->getPath()); | |
| $route->setSchemes($current_route->getSchemes()); | |
| $route->setMethods($current_route->getMethods()); | |
| $route->setOptions($current_route->getOptions()); | |
| $route->setDefaults($current_route->getDefaults()); | |
| $parameters = array_merge($parameters, $this->routeMatch->getRawParameters()->all()); | |
| if ($bubbleable_metadata) { | |
| $bubbleable_metadata->addCacheContexts(['route']); | |
| } | |
| } | |
| else { | |
| // If we have no current route match available, point to the frontpage. | |
| $route->setPath('/'); | |
| } | |
| } | |
| } | |
| } |