Правильный способ создания ссылок в любом контексте (FE / BE / CLI) - использование PageRouter
. Этот маршрутизатор всегда подключен к сайту , поэтому сначала вам нужно будет найти правильный сайт, например, с помощью SiteFinder
. После этого вы можете использовать PageRouter::generateUri()
.
Полный пример:
use TYPO3\CMS\Core\Site\SiteFinder;
use TYPO3\CMS\Core\Utility\GeneralUtility;
$site = GeneralUtility::makeInstance(SiteFinder::class)->getSiteByPageId($pageUid);
$arguments = [
'foo' => 1,
];
$uri = (string)$site->getRouter()->generateUri((string)$pageUid, $arguments);
Обратите внимание, что этот API ничего не знает о Extbase и проходит через $arguments
в URI, поэтому, если вам нужно mimi c поведение Extbase UriBuilder
вам нужно сделать это самостоятельно:
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Extbase\Object\ObjectManager;
use TYPO3\CMS\Extbase\Service\ExtensionService;
$objectManager = GeneralUtility::makeInstance(ObjectManager::class);
$extensionService = $objectManager->get(ExtensionService::class);
$argumentsPrefix = $extensionService->getPluginNamespace($extensionName, $pluginName);
$arguments = [
$argumentsPrefix => [
'action' => $actionName,
'controller' => $controllerName,
],
];