diff core/lib/Drupal/Core/Routing/UrlMatcher.php @ 0:4c8ae668cc8c

Initial import (non-working)
author Chris Cannam
date Wed, 29 Nov 2017 16:09:58 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/core/lib/Drupal/Core/Routing/UrlMatcher.php	Wed Nov 29 16:09:58 2017 +0000
@@ -0,0 +1,44 @@
+<?php
+
+namespace Drupal\Core\Routing;
+
+use Drupal\Core\Path\CurrentPathStack;
+use Symfony\Component\HttpFoundation\Request;
+use Symfony\Component\Routing\RouteCollection;
+use Symfony\Cmf\Component\Routing\NestedMatcher\UrlMatcher as BaseUrlMatcher;
+
+/**
+ * Drupal-specific URL Matcher; handles the Drupal "system path" mapping.
+ */
+class UrlMatcher extends BaseUrlMatcher {
+
+  /**
+   * The current path.
+   *
+   * @var \Drupal\Core\Path\CurrentPathStack
+   */
+  protected $currentPath;
+
+  /**
+   * Constructs a new UrlMatcher.
+   *
+   * The parent class has a constructor we need to skip, so just override it
+   * with a no-op.
+   *
+   * @param \Drupal\Core\Path\CurrentPathStack $current_path
+   *   The current path.
+   */
+  public function __construct(CurrentPathStack $current_path) {
+    $this->currentPath = $current_path;
+  }
+
+  public function finalMatch(RouteCollection $collection, Request $request) {
+    $this->routes = $collection;
+    $context = new RequestContext();
+    $context->fromRequest($request);
+    $this->setContext($context);
+
+    return $this->match($this->currentPath->getPath($request));
+  }
+
+}