как создать URI внешнего интерфейса в команде планировщика (TYPO3 9) - PullRequest
0 голосов
/ 17 марта 2020

Каков наилучший способ генерирования URI внешнего интерфейса в команде планировщика в TYPO3 v9.

Я видел попытки инициализации TSFE вручную, но для меня это кажется подозрительным. Есть ли другие способы?

Ответы [ 2 ]

6 голосов
/ 17 марта 2020

Правильный способ создания ссылок в любом контексте (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,
    ],
];
0 голосов
/ 17 марта 2020

В зависимости от ваших потребностей, родной путь, описанный @ mathias-brodala, может оказаться недостаточным. В этих случаях вам понадобится соответствующий TSFE, в противном случае у вас не будут все настройки TypoScript, которые могут повлиять на генерацию ссылок.

Для этих случаев вам, в основном, необходимо создать экземпляр TypoScriptFrontendController самостоятельно, вызовите методы настройки и вставлять реальные или фиктивные зависимости, например FrontendUserAuthentication, в зависимости от вашего варианта использования.

Например, рабочее решение для TYPO3v9 можно найти в расширении rx_scheduled_social .

...