Вход Регистрация
Файл: symfony-2.7/src/Symfony/Bundle/WebProfilerBundle/Controller/RouterController.php
Строк: 120
<?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 SymfonyBundleWebProfilerBundleController;

use 
SymfonyComponentHttpFoundationResponse;
use 
SymfonyComponentRoutingMatcherUrlMatcherInterface;
use 
SymfonyComponentRoutingMatcherTraceableUrlMatcher;
use 
SymfonyComponentRoutingRouteCollection;
use 
SymfonyComponentRoutingRouterInterface;
use 
SymfonyComponentHttpKernelExceptionNotFoundHttpException;
use 
SymfonyComponentHttpKernelProfilerProfiler;

/**
 * RouterController.
 *
 * @author Fabien Potencier <fabien@symfony.com>
 */
class RouterController
{
    private 
$profiler;
    private 
$twig;
    private 
$matcher;
    private 
$routes;

    public function 
__construct(Profiler $profiler nullTwig_Environment $twigUrlMatcherInterface $matcher nullRouteCollection $routes null)
    {
        
$this->profiler $profiler;
        
$this->twig $twig;
        
$this->matcher $matcher;
        
$this->routes = (null === $routes && $matcher instanceof RouterInterface) ? $matcher->getRouteCollection() : $routes;
    }

    
/**
     * Renders the profiler panel for the given token.
     *
     * @param string $token The profiler token
     *
     * @return Response A Response instance
     *
     * @throws NotFoundHttpException
     */
    
public function panelAction($token)
    {
        if (
null === $this->profiler) {
            throw new 
NotFoundHttpException('The profiler must be enabled.');
        }

        
$this->profiler->disable();

        if (
null === $this->matcher || null === $this->routes) {
            return new 
Response('The Router is not enabled.'200, array('Content-Type' => 'text/html'));
        }

        
$profile $this->profiler->loadProfile($token);

        
$context $this->matcher->getContext();
        
$context->setMethod($profile->getMethod());
        
$matcher = new TraceableUrlMatcher($this->routes$context);

        
$request $profile->getCollector('request');

        return new 
Response($this->twig->render('@WebProfiler/Router/panel.html.twig', array(
            
'request' => $request,
            
'router' => $profile->getCollector('router'),
            
'traces' => $matcher->getTraces($request->getPathInfo()),
        )), 
200, array('Content-Type' => 'text/html'));
    }
}
Онлайн: 1
Реклама