URI builder (Extbase)

The URI builder offers a convenient way to create links in an Extbase context.

Usage in an Extbase controller

The URI builder is available as a property in a controller class which extends the ActionController class.

Example:

EXT:my_extension/Classes/Controller/MyController.php
<?php

declare(strict_types=1);

namespace MyVendor\MyExtension\Controller\MyController;

use Psr\Http\Message\ResponseInterface;
use TYPO3\CMS\Extbase\Mvc\Controller\ActionController;

final class MyController extends ActionController
{
    public function myAction(): ResponseInterface
    {
        $url = $this->uriBuilder
            ->reset()
            ->setTargetPageUid(42)
            ->uriFor(
                'anotherAction',
                [
                    'myRecord' => 21,
                ],
                'MyController',
                'myextension',
                'myplugin'
            );

        // do something with $url
    }
}
Copied!

Have a look into the API for the available methods of the URI builder.

Usage in another context

The \TYPO3\CMS\Extbase\Mvc\Web\Routing\UriBuilder class can be injected via constructor in a class:

EXT:my_extension/Classes/MyClass.php
<?php

declare(strict_types=1);

namespace MyVendor\MyExtension\MyClass;

use TYPO3\CMS\Extbase\Mvc\Web\Routing\UriBuilder;

final class MyClass
{
    private UriBuilder $uriBuilder;

    public function __construct(UriBuilder $uriBuilder)
    {
        $this->uriBuilder = $uriBuilder;
    }

    public function doSomething()
    {
        $url = $this->uriBuilder
            ->reset()
            ->setTargetPageUid(42)
            ->uriFor(
                'myAction',
                [
                    'myRecord' => 21,
                ],
                'MyController',
                'myextension',
                'myplugin'
            );

        // do something with $url
    }
}
Copied!

API

class \TYPO3\CMS\Extbase\Mvc\Web\Routing\ UriBuilder

An URI Builder

setArguments ( array $arguments)

Additional query parameters.

If you want to "prefix" arguments, you can pass in multidimensional arrays: array('prefix1' => array('foo' => 'bar')) gets "&prefix1[foo]=bar"

param array $arguments

the arguments

returntype

TYPO3\CMS\Extbase\Mvc\Web\Routing\UriBuilder

Returns:

the current UriBuilder to allow method chaining

setSection ( string $section)

If specified, adds a given HTML anchor to the URI (#...)

param string $section

the section

returntype

TYPO3\CMS\Extbase\Mvc\Web\Routing\UriBuilder

Returns:

the current UriBuilder to allow method chaining

setFormat ( string $format)

Specifies the format of the target (e.g. "html" or "xml")

param string $format

the format

returntype

TYPO3\CMS\Extbase\Mvc\Web\Routing\UriBuilder

Returns:

the current UriBuilder to allow method chaining

setCreateAbsoluteUri ( bool $createAbsoluteUri)

If set, the URI is prepended with the current base URI. Defaults to FALSE.

param bool $createAbsoluteUri

the createAbsoluteUri

returntype

TYPO3\CMS\Extbase\Mvc\Web\Routing\UriBuilder

Returns:

the current UriBuilder to allow method chaining

setAbsoluteUriScheme ( string $absoluteUriScheme)

Sets the scheme that should be used for absolute URIs in FE mode

param string $absoluteUriScheme

the scheme to be used for absolute URIs

returntype

TYPO3\CMS\Extbase\Mvc\Web\Routing\UriBuilder

Returns:

the current UriBuilder to allow method chaining

setLanguage ( string $language)

Enforces a URI / link to a page to a specific language (or use "current")

param string $language

the language

returntype

TYPO3\CMS\Extbase\Mvc\Web\Routing\UriBuilder

getLanguage ( )
returntype

string

setAddQueryString ( bool $addQueryString)

If set, the current query parameters will be merged with $this->arguments. Defaults to FALSE.

param bool $addQueryString

the addQueryString

returntype

TYPO3\CMS\Extbase\Mvc\Web\Routing\UriBuilder

Returns:

the current UriBuilder to allow method chaining

setArgumentsToBeExcludedFromQueryString ( array $argumentsToBeExcludedFromQueryString)

A list of arguments to be excluded from the query parameters Only active if addQueryString is set

param array $argumentsToBeExcludedFromQueryString

the argumentsToBeExcludedFromQueryString

returntype

TYPO3\CMS\Extbase\Mvc\Web\Routing\UriBuilder

Returns:

the current UriBuilder to allow method chaining

setArgumentPrefix ( string $argumentPrefix)

Specifies the prefix to be used for all arguments.

param string $argumentPrefix

the argumentPrefix

returntype

TYPO3\CMS\Extbase\Mvc\Web\Routing\UriBuilder

Returns:

the current UriBuilder to allow method chaining

setLinkAccessRestrictedPages ( bool $linkAccessRestrictedPages)

If set, URIs for pages without access permissions will be created

param bool $linkAccessRestrictedPages

the linkAccessRestrictedPages

returntype

TYPO3\CMS\Extbase\Mvc\Web\Routing\UriBuilder

Returns:

the current UriBuilder to allow method chaining

setTargetPageUid ( int $targetPageUid)

Uid of the target page

param int $targetPageUid

the targetPageUid

returntype

TYPO3\CMS\Extbase\Mvc\Web\Routing\UriBuilder

Returns:

the current UriBuilder to allow method chaining

setTargetPageType ( int $targetPageType)

Sets the page type of the target URI. Defaults to 0

param int $targetPageType

the targetPageType

returntype

TYPO3\CMS\Extbase\Mvc\Web\Routing\UriBuilder

Returns:

the current UriBuilder to allow method chaining

setNoCache ( bool $noCache)

by default FALSE; if TRUE, &no_cache=1 will be appended to the URI

param bool $noCache

the noCache

returntype

TYPO3\CMS\Extbase\Mvc\Web\Routing\UriBuilder

Returns:

the current UriBuilder to allow method chaining

reset ( )

Resets all UriBuilder options to their default value

returntype

TYPO3\CMS\Extbase\Mvc\Web\Routing\UriBuilder

Returns:

the current UriBuilder to allow method chaining

uriFor ( string $actionName = NULL, array $controllerArguments = NULL, string $controllerName = NULL, string $extensionName = NULL, string $pluginName = NULL)

Creates an URI used for linking to an Extbase action.

Works in Frontend and Backend mode of TYPO3.

param string $actionName

Name of the action to be called, default: NULL

param array $controllerArguments

Additional query parameters. Will be "namespaced" and merged with $this->arguments., default: NULL

param string $controllerName

Name of the target controller. If not set, current ControllerName is used., default: NULL

param string $extensionName

Name of the target extension, without underscores. If not set, current ExtensionName is used., default: NULL

param string $pluginName

Name of the target plugin. If not set, current PluginName is used., default: NULL

returntype

string

Returns:

the rendered URI

build ( )

Builds the URI Depending on the current context this calls buildBackendUri() or buildFrontendUri()

returntype

string

Returns:

The URI