Symfony2 Routing - route subdomains Symfony2 Routing - route subdomains php php

Symfony2 Routing - route subdomains


Just to point out that this is now added in Symfony v2.2 - http://symfony.com/doc/master/components/routing/hostname_pattern.html.

mobile_homepage:    path:     /    host:     m.{domain}    defaults: { _controller: AcmeDemoBundle:Main:mobileHomepage }    requirements:        domain: %domain%homepage:    path:  /    defaults: { _controller: AcmeDemoBundle:Main:homepage }


This is my solution:

In the config.yml inside app dir add the following lines:

services:   kernel.listener.subdomain_listener:       class: Acme\DemoBundle\Listener\SubdomainListener       tags:           - { name: kernel.event_listener, event: kernel.request, method: onDomainParse }

Then create the class SubdomainListener.php as:

<?phpnamespace Acme\DemoBundle\Listener;use Symfony\Component\EventDispatcher\EventDispatcher;use Symfony\Component\EventDispatcher\Event;class SubdomainListener{   public function onDomainParse(Event $event)   {       $request = $event->getRequest();       $session = $request->getSession();       // todo: parsing subdomain to detect country       $session->set('subdomain', $request->getHost());   }}


Alternatively get hostname in the controller:

class DefaultController extends PowmaController {  /**   * @Route("/test")   */  public function testAction() {    return new Response( 'Hostname ' . $this->getRequestHostnameString() );  }  function getRequestHostnameString() {    return $this->getRequest()->getHost();  }