moved the router data collector to HttpKernel
This commit is contained in:
parent
75d8ecbb6b
commit
0875124fee
@ -11,94 +11,21 @@
|
|||||||
|
|
||||||
namespace Symfony\Bundle\FrameworkBundle\DataCollector;
|
namespace Symfony\Bundle\FrameworkBundle\DataCollector;
|
||||||
|
|
||||||
|
use Symfony\Component\HttpKernel\DataCollector\RouterDataCollector as BaseRouterDataCollector;
|
||||||
use Symfony\Component\HttpFoundation\Request;
|
use Symfony\Component\HttpFoundation\Request;
|
||||||
use Symfony\Component\HttpFoundation\Response;
|
|
||||||
use Symfony\Component\HttpKernel\DataCollector\DataCollector;
|
|
||||||
use Symfony\Bundle\FrameworkBundle\Controller\RedirectController;
|
use Symfony\Bundle\FrameworkBundle\Controller\RedirectController;
|
||||||
use Symfony\Component\HttpFoundation\RedirectResponse;
|
|
||||||
use Symfony\Component\HttpKernel\Event\FilterControllerEvent;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* RouterDataCollector.
|
* RouterDataCollector.
|
||||||
*
|
*
|
||||||
* @author Fabien Potencier <fabien@symfony.com>
|
* @author Fabien Potencier <fabien@symfony.com>
|
||||||
*/
|
*/
|
||||||
class RouterDataCollector extends DataCollector
|
class RouterDataCollector extends BaseRouterDataCollector
|
||||||
{
|
{
|
||||||
protected $controllers;
|
public function getRoute(Request $request, $controller)
|
||||||
|
|
||||||
public function __construct()
|
|
||||||
{
|
{
|
||||||
$this->controllers = new \SplObjectStorage();
|
if ($controller instanceof RedirectController) {
|
||||||
|
return $request->attributes->get('_route');
|
||||||
$this->data = array(
|
|
||||||
'redirect' => false,
|
|
||||||
'url' => null,
|
|
||||||
'route' => null,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritdoc}
|
|
||||||
*/
|
|
||||||
public function collect(Request $request, Response $response, \Exception $exception = null)
|
|
||||||
{
|
|
||||||
if ($response instanceof RedirectResponse) {
|
|
||||||
$this->data['redirect'] = true;
|
|
||||||
$this->data['url'] = $response->getTargetUrl();
|
|
||||||
|
|
||||||
if ($this->controllers->contains($request)) {
|
|
||||||
$controller = $this->controllers[$request];
|
|
||||||
if (is_array($controller)) {
|
|
||||||
$controller = $controller[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($controller instanceof RedirectController) {
|
|
||||||
$this->data['route'] = $request->attributes->get('_route', 'n/a');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Remembers the controller associated to each request.
|
|
||||||
*
|
|
||||||
* @param FilterControllerEvent The filter controller event
|
|
||||||
*/
|
|
||||||
public function onKernelController(FilterControllerEvent $event)
|
|
||||||
{
|
|
||||||
$this->controllers[$event->getRequest()] = $event->getController();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return Boolean Whether this request will result in a redirect
|
|
||||||
*/
|
|
||||||
public function getRedirect()
|
|
||||||
{
|
|
||||||
return $this->data['redirect'];
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return string|null The target URL
|
|
||||||
*/
|
|
||||||
public function getTargetUrl()
|
|
||||||
{
|
|
||||||
return $this->data['url'];
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return string|null The target route
|
|
||||||
*/
|
|
||||||
public function getTargetRoute()
|
|
||||||
{
|
|
||||||
return $this->data['route'];
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritdoc}
|
|
||||||
*/
|
|
||||||
public function getName()
|
|
||||||
{
|
|
||||||
return 'router';
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,106 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file is part of the Symfony package.
|
||||||
|
*
|
||||||
|
* (c) Fabien Potencier <fabien@symfony.com>
|
||||||
|
*
|
||||||
|
* For the full copyright and license information, please view the LICENSE
|
||||||
|
* file that was distributed with this source code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Symfony\Component\HttpKernel\DataCollector;
|
||||||
|
|
||||||
|
use Symfony\Component\HttpFoundation\Request;
|
||||||
|
use Symfony\Component\HttpFoundation\Response;
|
||||||
|
use Symfony\Component\HttpFoundation\RedirectResponse;
|
||||||
|
use Symfony\Component\HttpKernel\DataCollector\DataCollector;
|
||||||
|
use Symfony\Component\HttpKernel\Event\FilterControllerEvent;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* RouterDataCollector.
|
||||||
|
*
|
||||||
|
* @author Fabien Potencier <fabien@symfony.com>
|
||||||
|
*/
|
||||||
|
class RouterDataCollector extends DataCollector
|
||||||
|
{
|
||||||
|
protected $controllers;
|
||||||
|
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
$this->controllers = new \SplObjectStorage();
|
||||||
|
|
||||||
|
$this->data = array(
|
||||||
|
'redirect' => false,
|
||||||
|
'url' => null,
|
||||||
|
'route' => null,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function collect(Request $request, Response $response, \Exception $exception = null)
|
||||||
|
{
|
||||||
|
if ($response instanceof RedirectResponse) {
|
||||||
|
$this->data['redirect'] = true;
|
||||||
|
$this->data['url'] = $response->getTargetUrl();
|
||||||
|
|
||||||
|
if ($this->controllers->contains($request)) {
|
||||||
|
$controller = $this->controllers[$request];
|
||||||
|
if (is_array($controller)) {
|
||||||
|
$controller = $controller[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->data['route'] = $this->guessRoute($request, $controller);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function guessRoute(Request $request, $controller)
|
||||||
|
{
|
||||||
|
return 'n/a';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remembers the controller associated to each request.
|
||||||
|
*
|
||||||
|
* @param FilterControllerEvent The filter controller event
|
||||||
|
*/
|
||||||
|
public function onKernelController(FilterControllerEvent $event)
|
||||||
|
{
|
||||||
|
$this->controllers[$event->getRequest()] = $event->getController();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Boolean Whether this request will result in a redirect
|
||||||
|
*/
|
||||||
|
public function getRedirect()
|
||||||
|
{
|
||||||
|
return $this->data['redirect'];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string|null The target URL
|
||||||
|
*/
|
||||||
|
public function getTargetUrl()
|
||||||
|
{
|
||||||
|
return $this->data['url'];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string|null The target route
|
||||||
|
*/
|
||||||
|
public function getTargetRoute()
|
||||||
|
{
|
||||||
|
return $this->data['route'];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function getName()
|
||||||
|
{
|
||||||
|
return 'router';
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user