从包含子域的URL获取路由名称

时间:2017-05-10 12:58:44

标签: symfony routing subdomain

Symfony有方法UrlMatcherInterface::match($pathinfo),它接受​​URL路径并返回有关它的信息(例如路由名称,路由参数,操作方法等)。因此,如果我将此方法称为$matcher->match('/help'),则会获得有关http://example.com/help网址的信息。

问题:如何获取有关包含子域的网址的信息,例如http://subdomain.example.com/events?此方法仅接受没有主机名的路径,当我尝试使用主机名传递URL时,它会抛出ResourceNotFoundException

提前致谢。

1 个答案:

答案 0 :(得分:0)

使用RequestContext & UrlMatcher找到解决方案。

$parsedUrl = parse_url($url);

$context = new RequestContext();
$context->setMethod($method); // e.g. GET
$context->setScheme($parsedUrl['scheme']);
$context->setHost($parsedUrl['host']);

$matcher = new UrlMatcher(
    $this->router->getRouteCollection(),
    $context
);

$routeInfo = $matcher->match($parsedUrl['path']);