/** * Setting lang seo alternatives * * @param GetResponseEvent $event */ public function onKernelRequest(GetResponseEvent $event) { $langs = ['en', 'ru']; $request = $event->getRequest(); $route = $request->attributes->get('_route'); if ($route) { $routeParams = $request->attributes->get('_route_params'); $attributes = $request->query->all(); if (!is_null($routeParams)) { $attributes = array_merge($attributes, $routeParams); } foreach ($langs as $lang) { $attributes['_locale'] = $lang; $this->seoPage->addLangAlternate($this->router->generate($route, $attributes, true), $lang); } } }
/** * {inheritDoc}. */ public function updateAlternateLocales(AlternateLocaleCollection $collection) { foreach ($collection as $alternateLocale) { $this->sonataPage->addLangAlternate($alternateLocale->href, $alternateLocale->hrefLocale); } }
public function testLangAlternates() { $page = new SeoPage(); $page->setLangAlternates(array('http://example.com/' => 'x-default')); $page->addLangAlternate('http://example.com/en-us', 'en-us'); $expected = array('http://example.com/' => 'x-default', 'http://example.com/en-us' => 'en-us'); $this->assertEquals($expected, $page->getLangAlternates()); $this->assertTrue($page->hasLangAlternate('http://example.com/')); $page->removeLangAlternate('http://example.com/'); $this->assertFalse($page->hasLangAlternate('http://example.com/')); }