TYPO3 Extbase - Как вызвать действие контроллера из внешнего источника

Допустим, у меня есть расширение под названием my_extension, а в my_extension есть плагин под названием apiResponse.

Затем у меня в контроллере есть функция sendApiDataAction.

Как я могу вызвать этот sendApiDataAction с внешнего устройства через обычный HTTP-запрос GET?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
1 947
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Я предполагаю, что вы используете то же расширение для вызова внешнего плагина. Вы можете использовать Fluid Viewhelper для создания URL-адреса для вызова действия контроллера.

1) Если вы хотите использовать URL-адрес для вызова действия, используйте ниже Uri / ActionViewHelper.

<f:uri.action action = "NULL" arguments = "{foo: 'bar'}" controller = "NULL" extensionName = "NULL" pluginName = "NULL" pageUid = "123" pageType = "123" noCache = "1" noCacheHash = "1" section = "''" format = "''" linkAccessRestrictedPages = "1" additionalParams = "{foo: 'bar'}" absolute = "1" addQueryString = "1" argumentsToBeExcludedFromQueryString = "{foo: 'bar'}" addQueryStringMethod = "NULL">
</f:uri.action>

Вы можете использовать встроенную нотацию.

    {f:uri.action(action: 'NULL', arguments: {foo: 'bar'}, controller: 'NULL', extensionName: 'NULL', pluginName: 'NULL', pageUid: 123, pageType: 123, noCache: 1, noCacheHash: 1, section: '''', format: '''', linkAccessRestrictedPages: 1, additionalParams: {foo: 'bar'}, absolute: 1, addQueryString: 1, argumentsToBeExcludedFromQueryString: {foo: 'bar'}, addQueryStringMethod: 'NULL')}

2) Использование формы: если вы отправляете форму, у вас есть конфигурация формы для вызова действия.

<f:form additionalAttributes = "{foo: 'bar'}" data = "{foo: 'bar'}" action = "NULL" arguments = "{foo: 'bar'}" controller = "NULL" extensionName = "NULL" pluginName = "NULL" pageUid = "123" object = "[mixed]" pageType = "123" noCache = "1" noCacheHash = "1" section = "''" format = "''" additionalParams = "{foo: 'bar'}" absolute = "1" addQueryString = "1" argumentsToBeExcludedFromQueryString = "{foo: 'bar'}" fieldNamePrefix = "NULL" actionUri = "NULL" objectName = "NULL" hiddenFieldClassName = "NULL" enctype = "NULL" method = "NULL" name = "NULL" onreset = "NULL" onsubmit = "NULL" class = "NULL" dir = "NULL" id = "NULL" lang = "NULL" style = "NULL" title = "NULL" accesskey = "NULL" tabindex = "123" onclick = "NULL">
</f:form>

Надеюсь, это поможет вам!

Спасибо за вашу помощь, но я не имел в виду гибкий ViewHelper. Мне нужно вызвать по этой ссылке с другого веб-сайта, который не использовал опечатку 3 или жидкость.

rockZ 10.01.2019 07:57

Создайте ссылку с f:uri.action и используйте URL-адрес с внешнего веб-сайта

GNB 10.01.2019 08:09
Ответ принят как подходящий

Во-первых, вам понадобится эта информация от вашего расширения:

  • extensionKey (это просто, в вашем примере это myExtension)
  • pluginName (это имя, которое вы определили в своем ext_localconf.php, где вы назначаете действия)
  • actionName (в вашем примере sendApiData - без action)
  • controllerName (это контроллер, на котором находится ваше действие)
  • pageId (это идентификатор страницы, на которой реализован ваш плагин)
  • пространство имен (это имя, созданное на основе вашего плагина и вашего расширения, в вашем случае tx_myextension_{pluginName}

Затем вы можете получить доступ к действию,

http(s)://your.domain.tld/index.php?id = {pageId}&{namespace}[controller] = {controllerName}&{namespace}[action] = {actionName}

Отлично, спасибо, но что делать, если pageId отсутствует, поскольку контроллер не интегрирован на страницу, поскольку это просто API?

rockZ 10.01.2019 12:05

Если вы хотите использовать его без pageId, я бы предложил использовать тип страницы.

Thomas Löffler 10.01.2019 12:26

Другие вопросы по теме