eZ\Publish\Core\MVC\Symfony\EventListener\LanguageSwitchListener::onRouteReferenceGeneration PHP Method

onRouteReferenceGeneration() public method

If found, it will add "siteaccess" parameter to the RouteReference, to trigger SiteAccess switch when generating the final link.
See also: eZ\Publish\Core\MVC\Symfony\Routing\Generator::generate()
See also: eZ\Publish\Core\MVC\Symfony\Routing\Generator\UrlAliasGenerator::doGenerate()
public onRouteReferenceGeneration ( RouteReferenceGenerationEvent $event )
$event eZ\Publish\Core\MVC\Symfony\Event\RouteReferenceGenerationEvent
    public function onRouteReferenceGeneration(RouteReferenceGenerationEvent $event)
    {
        $routeReference = $event->getRouteReference();
        if (!$routeReference->has('language')) {
            return;
        }
        $language = $routeReference->get('language');
        $routeReference->remove('language');
        $siteAccess = $this->translationHelper->getTranslationSiteAccess($language);
        if ($siteAccess !== null) {
            $routeReference->set('siteaccess', $siteAccess);
        }
    }

Usage Example

 public function testOnRouteReferenceGenerationNoTranslationSiteAccess()
 {
     $language = 'fre-FR';
     $routeReference = new RouteReference('foo', array('language' => $language));
     $event = new RouteReferenceGenerationEvent($routeReference, new Request());
     $this->translationHelper->expects($this->once())->method('getTranslationSiteAccess')->with($language)->will($this->returnValue(null));
     $listener = new LanguageSwitchListener($this->translationHelper);
     $listener->onRouteReferenceGeneration($event);
     $this->assertFalse($routeReference->has('language'));
     $this->assertFalse($routeReference->has('siteaccess'));
 }