src/Extension/FluentSiteTreeExtension.php
protected function addLocalePrefixToUrlSegment(FieldList $fields)
    {
        // Ensure the field is available in the list
        $segmentField = $fields->fieldByName('Root.Main.URLSegment');
        if (!$segmentField || !($segmentField instanceof SiteTreeURLSegmentField)) {
            return $this;
        }

        // Mock frontend and get link to parent object / page
        $baseURL = FluentState::singleton()
            ->withState(function (FluentState $tempState) {
                $tempState->setIsDomainMode(true);
                $tempState->setIsFrontend(true);

                // Get relative link up until the current URL segment
                if (SiteTree::config()->get('nested_urls') && $this->owner->ParentID) {
                    $parentRelative = $this->owner->Parent()->RelativeLink();
                } else {
                    $parentRelative = '/';
                    $action = null;
                    $this->updateRelativeLink($parentRelative, $action);
                }

                // Get absolute base path
                $domain = Locale::getCurrentLocale()->getDomain();
                if ($domain) {
                    $parentBase = Controller::join_links($domain->Link(), Director::baseURL());
                } else {
                    $parentBase = Director::absoluteBaseURL();
                }

                // Join base / relative links
                return Controller::join_links($parentBase, $parentRelative);
            });


        $segmentField->setURLPrefix($baseURL);
        return $this;
    }
protected function addLocalePrefixToUrlSegment(FieldList $fields)
    {
        // Ensure the field is available in the list
        $segmentField = $fields->fieldByName('Root.Main.URLSegment');
        if (!$segmentField || !($segmentField instanceof SiteTreeURLSegmentField)) {
            return $this;
        }

        // Mock frontend and get link to parent object / page
        $baseURL = FluentState::singleton()
            ->withState(function (FluentState $tempState) {
                $tempState->setIsDomainMode(true);
                $tempState->setIsFrontend(true);

                // Get relative link up until the current URL segment
                if (SiteTree::config()->get('nested_urls') && $this->owner->ParentID) {
                    $parentRelative = $this->owner->Parent()->RelativeLink();
                } else {
                    $parentRelative = '/';
                    $action = null;
                    $this->updateRelativeLink($parentRelative, $action);
                }

                // Get absolute base path
                $domain = Locale::getCurrentLocale()->getDomain();
                if ($domain) {
                    $parentBase = Controller::join_links($domain->Link(), Director::baseURL());
                } else {
                    $parentBase = Director::absoluteBaseURL();
                }

                // Join base / relative links
                return Controller::join_links($parentBase, $parentRelative);
            });


        $segmentField->setURLPrefix($baseURL);
        return $this;
    }
protected function addLocalePrefixToUrlSegment ( FieldList $ fields ) { // Ensure the field is available in the list $ segmentField = $ fields -> fieldByName ( 'Root.Main.URLSegment' ) ; if ( ! $ segmentField || ! ( $ segmentField instanceof SiteTreeURLSegmentField ) ) { return $ this ; } // Mock frontend and get link to parent object / page $ baseURL = FluentState :: singleton ( ) -> withState ( function ( FluentState $ tempState ) { $ tempState -> setIsDomainMode ( true ) ; $ tempState -> setIsFrontend ( true ) ; // Get relative link up until the current URL segment if ( SiteTree :: config ( ) -> get ( 'nested_urls' ) && $ this -> owner -> ParentID ) { $ parentRelative = $ this -> owner -> Parent ( ) -> RelativeLink ( ) ; } else { $ parentRelative = '/' ; $ action = null ; $ this -> updateRelativeLink ( $ parentRelative , $ action ) ; } // Get absolute base path $ domain = Locale :: getCurrentLocale ( ) -> getDomain ( ) ; if ( $ domain ) { $ parentBase = Controller :: join_links ( $ domain -> Link ( ) , Director :: baseURL ( ) ) ; } else { $ parentBase = Director :: absoluteBaseURL ( ) ; } // Join base / relative links return Controller :: join_links ( $ parentBase , $ parentRelative ) ; } ) ; $ segmentField -> setURLPrefix ( $ baseURL ) ; return $ this ; }
Add the locale's URLSegment to the URL prefix for a page's URL segment field

@param FieldList $fields
@return $this
Add the locale s URLSegment to the URL prefix for a page s URL segment field