public function testWithHostOnRouteCollection()
 {
     $coll = new RouteCollection();
     $coll->add('foo', new Route('/foo/{foo}'));
     $coll->add('bar', new Route('/bar/{foo}', array(), array(), array(), '{locale}.example.net'));
     $coll->setHost('{locale}.example.com');
     $matcher = new UrlMatcher($coll, new RequestContext('', 'GET', 'en.example.com'));
     $this->assertEquals(array('foo' => 'bar', '_route' => 'foo', 'locale' => 'en'), $matcher->match('/foo/bar'));
     $matcher = new UrlMatcher($coll, new RequestContext('', 'GET', 'en.example.com'));
     $this->assertEquals(array('foo' => 'bar', '_route' => 'bar', 'locale' => 'en'), $matcher->match('/bar/bar'));
 }
Exemplo n.º 2
0
<?php

// RouteProvider.php
use App\Controller;
use Symfony\Component\Routing\Route;
use Symfony\Component\Routing\RouteCollection;
const DOMAIN_DEV = '\\w+.phoeni.x';
const DOMAIN_STAGE = 'stage.phoenix-vxtool.net';
const DOMAIN_LIVE = 'phoenix-vxtool.net';
const SUBDOMAIN_WWW = '|www.';
const SUBDOMAIN_API = 'api.';
$domain = implode('|', [DOMAIN_LIVE, DOMAIN_STAGE, DOMAIN_DEV]);
$routingConf = ['web-gui' => ['domain' => $domain, 'subdomain' => SUBDOMAIN_WWW, 'routes' => ['root' => ['methods' => ['GET'], 'path' => '/', 'controller' => [Controller\Web\Gui\Index::class, 'index']], 'get-logout' => ['methods' => ['GET'], 'path' => '/logout', 'controller' => [Controller\Web\Gui\Index::class, 'getLogout']], 'get-login' => ['methods' => ['GET'], 'path' => '/login', 'controller' => [Controller\Web\Gui\Index::class, 'getLogin']], 'post-login' => ['methods' => ['POST'], 'path' => '/login', 'controller' => [Controller\Web\Gui\Index::class, 'postLogin']]]], 'web-dev' => ['domain' => $domain, 'subdomain' => SUBDOMAIN_WWW, 'path' => '/dev', 'routes' => ['test' => ['methods' => ['GET'], 'path' => '/test{developerShort}', 'controller' => [Controller\Web\Dev\DevelopmentController::class, 'test'], 'template' => '']]]];
/**
 * @todo put following part into \App\Routing\Loader\ArrayFileLoader
 */
$masterCollection = new RouteCollection();
foreach ($routingConf as $groupName => $groupConfig) {
    $collection = new RouteCollection();
    $collection->setHost($groupConfig['subdomain'] . $groupConfig['domain']);
    foreach ($groupConfig['routes'] as $routeName => $route) {
        $defaults = array_replace_recursive(isset($route['defaults']) ? $route['defaults'] : [], ['_controller' => $route['controller'][0] . '::' . $route['controller'][1]]);
        $collection->add($groupName . '-' . $routeName, new Route($route['path'], $defaults, isset($route['requirements']) ? $route['requirements'] : [], isset($route['options']) ? $route['options'] : [], '', isset($route['schemes']) ? $route['schemes'] : [], isset($route['methods']) ? $route['methods'] : ['GET'], ''));
    }
    if (isset($groupConfig['path'])) {
        $collection->addPrefix($groupConfig['path']);
    }
    $masterCollection->addCollection($collection);
}
return $masterCollection;
Exemplo n.º 3
0
 public function testSetHost()
 {
     $collection = new RouteCollection();
     $routea = new Route('/a');
     $routeb = new Route('/b', array(), array(), array(), '{locale}.example.net');
     $collection->add('a', $routea);
     $collection->add('b', $routeb);
     $collection->setHost('{locale}.example.com');
     $this->assertEquals('{locale}.example.com', $routea->getHost());
     $this->assertEquals('{locale}.example.com', $routeb->getHost());
 }
Exemplo n.º 4
0
 public function __construct()
 {
     $this->collection = new RouteCollection();
     $this->collection->setHost(Config::getInstance()->get('app.url'));
     $this->addDefaultsWildCards();
 }