Chris@0
|
1 <?php
|
Chris@0
|
2
|
Chris@0
|
3 namespace Drupal\Core\EventSubscriber;
|
Chris@0
|
4
|
Chris@0
|
5 use Drupal\Core\Routing\RouteBuildEvent;
|
Chris@0
|
6 use Drupal\Core\Routing\RouteSubscriberBase;
|
Chris@0
|
7 use Symfony\Cmf\Component\Routing\RouteObjectInterface;
|
Chris@0
|
8 use Symfony\Component\Routing\RouteCollection;
|
Chris@0
|
9
|
Chris@0
|
10 /**
|
Chris@0
|
11 * Provides a route subscriber which checks for invalid pattern variables.
|
Chris@0
|
12 */
|
Chris@0
|
13 class SpecialAttributesRouteSubscriber extends RouteSubscriberBase {
|
Chris@0
|
14
|
Chris@0
|
15 /**
|
Chris@0
|
16 * {@inheritdoc}
|
Chris@0
|
17 */
|
Chris@0
|
18 protected function alterRoutes(RouteCollection $collection) {
|
Chris@0
|
19 $special_variables = [
|
Chris@0
|
20 'system_path',
|
Chris@0
|
21 '_legacy',
|
Chris@0
|
22 '_raw_variables',
|
Chris@0
|
23 RouteObjectInterface::ROUTE_OBJECT,
|
Chris@0
|
24 RouteObjectInterface::ROUTE_NAME,
|
Chris@0
|
25 '_content',
|
Chris@0
|
26 '_controller',
|
Chris@0
|
27 '_form',
|
Chris@0
|
28 ];
|
Chris@0
|
29 foreach ($collection->all() as $name => $route) {
|
Chris@0
|
30 if ($not_allowed_variables = array_intersect($route->compile()->getVariables(), $special_variables)) {
|
Chris@0
|
31 $reserved = implode(', ', $not_allowed_variables);
|
Chris@0
|
32 trigger_error(sprintf('Route %s uses reserved variable names: %s', $name, $reserved), E_USER_WARNING);
|
Chris@0
|
33 }
|
Chris@0
|
34 }
|
Chris@0
|
35 }
|
Chris@0
|
36
|
Chris@0
|
37 /**
|
Chris@0
|
38 * Delegates the route altering to self::alterRoutes().
|
Chris@0
|
39 *
|
Chris@0
|
40 * @param \Drupal\Core\Routing\RouteBuildEvent $event
|
Chris@0
|
41 * The route build event.
|
Chris@0
|
42 */
|
Chris@0
|
43 public function onAlterRoutes(RouteBuildEvent $event) {
|
Chris@0
|
44 $collection = $event->getRouteCollection();
|
Chris@0
|
45 $this->alterRoutes($collection);
|
Chris@0
|
46 }
|
Chris@0
|
47
|
Chris@0
|
48 }
|