Symfony\Bundle\FrameworkBundle\HttpKernel::generateInternalUri PHP Method

generateInternalUri() public method

This method uses the "_internal" route, which should be available.
public generateInternalUri ( string $controller, array $attributes = [], array $query = [] ) : string
$controller string A controller name to execute (a string like BlogBundle:Post:index), or a relative URI
$attributes array An array of request attributes
$query array An array of request query parameters
return string An internal URI
    public function generateInternalUri($controller, array $attributes = array(), array $query = array())
    {
        if (0 === strpos($controller, '/')) {
            return $controller;
        }

        $uri = $this->container->get('router')->generate('_internal', array(
            'controller' => $controller,
            'path'       => $attributes ? http_build_query($attributes) : 'none',
            '_format'    => $this->container->get('request')->getRequestFormat(),
        ));

        if ($query) {
            $uri = $uri.'?'.http_build_query($query);
        }

        return $uri;
    }

Usage Example

示例#1
0
 public function testGenerateInternalUriHandlesNullValues()
 {
     $request = new Request();
     $router = $this->getMock('Symfony\\Component\\Routing\\RouterInterface');
     $container = $this->getMock('Symfony\\Component\\DependencyInjection\\ContainerInterface');
     $container->expects($this->at(0))->method('get')->with($this->equalTo('router'))->will($this->returnValue($router));
     $container->expects($this->at('1'))->method('get')->with($this->equalTo('request'))->will($this->returnValue($request));
     $controller = 'AController';
     $attributes = array('anAttribute' => null);
     $query = array('aQueryParam' => null);
     $expectedPath = 'none';
     $routeParameters = array('controller' => $controller, 'path' => $expectedPath, '_format' => 'html');
     $router->expects($this->once())->method('generate')->with($this->equalTo('_internal'), $this->equalTo($routeParameters))->will($this->returnValue('GENERATED_URI'));
     $dispatcher = new EventDispatcher();
     $resolver = $this->getMock('Symfony\\Component\\HttpKernel\\Controller\\ControllerResolverInterface');
     $kernel = new HttpKernel($dispatcher, $container, $resolver);
     $uri = $kernel->generateInternalUri($controller, $attributes, $query);
     $this->assertEquals('GENERATED_URI', $uri);
 }