eZ\Publish\Core\Helper\TranslationHelper::getTranslationSiteAccess PHP Method

getTranslationSiteAccess() public method

This is used for LanguageSwitcher feature (generate links for current content in a different language if available). Will use configured translation_siteaccesses if any. Otherwise will use related siteaccesses (e.g. same repository, same rootLocationId). Will return null if no translation SiteAccess can be found.
public getTranslationSiteAccess ( string $languageCode ) : string | null
$languageCode string Translation language code.
return string | null
    public function getTranslationSiteAccess($languageCode)
    {
        $translationSiteAccesses = $this->configResolver->getParameter('translation_siteaccesses');
        $relatedSiteAccesses = $this->configResolver->getParameter('related_siteaccesses');
        if (!isset($this->siteAccessesByLanguage[$languageCode])) {
            if ($this->logger) {
                $this->logger->error("Couldn't find any SiteAccess with '{$languageCode}' as main language.");
            }
            return null;
        }
        $relatedSiteAccesses = $translationSiteAccesses ?: $relatedSiteAccesses;
        $translationSiteAccesses = array_intersect($this->siteAccessesByLanguage[$languageCode], $relatedSiteAccesses);
        return array_shift($translationSiteAccesses);
    }

Usage Example

 /**
  * If "language" parameter is present, will try to get corresponding SiteAccess for translation.
  * If found, it will add "siteaccess" parameter to the RouteReference, to trigger SiteAccess switch when generating
  * the final link.
  *
  * @see \eZ\Publish\Core\MVC\Symfony\Routing\Generator::generate()
  * @see \eZ\Publish\Core\MVC\Symfony\Routing\Generator\UrlAliasGenerator::doGenerate()
  *
  * @param \eZ\Publish\Core\MVC\Symfony\Event\RouteReferenceGenerationEvent $event
  */
 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);
     }
 }
All Usage Examples Of eZ\Publish\Core\Helper\TranslationHelper::getTranslationSiteAccess