|
18 | 18 | use Symfony\Component\Routing\RouterInterface;
|
19 | 19 | use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
|
20 | 20 | use Symfony\Component\HttpKernel\Profiler\Profiler;
|
| 21 | +use Symfony\Component\HttpKernel\DataCollector\RequestDataCollector; |
21 | 22 |
|
22 | 23 | /**
|
23 | 24 | * RouterController.
|
@@ -62,16 +63,39 @@ public function panelAction($token)
|
62 | 63 |
|
63 | 64 | $profile = $this->profiler->loadProfile($token);
|
64 | 65 |
|
65 |
| - $context = $this->matcher->getContext(); |
66 |
| - $context->setMethod($profile->getMethod()); |
67 |
| - $matcher = new TraceableUrlMatcher($this->routes, $context); |
68 |
| - |
| 66 | + /** @var RequestDataCollector $request */ |
69 | 67 | $request = $profile->getCollector('request');
|
70 | 68 |
|
71 | 69 | return new Response($this->twig->render('@WebProfiler/Router/panel.html.twig', array(
|
72 | 70 | 'request' => $request,
|
73 | 71 | 'router' => $profile->getCollector('router'),
|
74 |
| - 'traces' => $matcher->getTraces($request->getPathInfo()), |
| 72 | + 'traces' => $this->getTraces($request, $profile->getMethod()), |
75 | 73 | )), 200, array('Content-Type' => 'text/html'));
|
76 | 74 | }
|
| 75 | + |
| 76 | + /** |
| 77 | + * Returns the routing traces associated to the given request. |
| 78 | + * |
| 79 | + * @param RequestDataCollector $request |
| 80 | + * @param string $method |
| 81 | + * |
| 82 | + * @return array |
| 83 | + */ |
| 84 | + private function getTraces(RequestDataCollector $request, $method) |
| 85 | + { |
| 86 | + $traceRequest = Request::create( |
| 87 | + $request->getPathInfo(), |
| 88 | + $request->getRequestServer()->get('REQUEST_METHOD'), |
| 89 | + $request->getRequestAttributes()->all(), |
| 90 | + $request->getRequestCookies()->all(), |
| 91 | + array(), |
| 92 | + $request->getRequestServer()->all() |
| 93 | + ); |
| 94 | + |
| 95 | + $context = $this->matcher->getContext(); |
| 96 | + $context->setMethod($method); |
| 97 | + $matcher = new TraceableUrlMatcher($this->routes, $context); |
| 98 | + |
| 99 | + return $matcher->getTracesForRequest($traceRequest); |
| 100 | + } |
77 | 101 | }
|
0 commit comments