TYPO3 Extbase - 如何从外部调用控制器动作
TYPO3 Extbase - How to call a controller action from external
假设我有一个名为 my_extension
的扩展,在 my_extension 中有一个名为 apiResponse
的插件。
然后我的控制器中有一个名为 sendApiDataAction
的函数。
如何通过普通的 http GET 请求从外部调用此 sendApiDataAction
?
我假设您使用相同的扩展名来调用外部插件。您可以使用流体 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) Using Form:如果您要提交表单,则您有一个表单配置来调用操作。
<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>
希望对您有所帮助!
首先,您需要从您的分机中获取这些信息:
- extensionKey(这很简单,在您的示例中是
myExtension
)
- pluginName(这是您在分配操作的
ext_localconf.php
中定义的名称)
- actionName(在您的示例中
sendApiData
- 没有 action
)
- controllerName(即您的操作所在的控制器)
- pageId(这是您的插件实现的页面 ID)
- 命名空间(这是根据您的插件和扩展构建的名称,在您的情况下
tx_myextension_{pluginName}
然后,您可以通过
访问该操作
http(s)://your.domain.tld/index.php?id={pageId}&{namespace}[controller]={controllerName}&{namespace}[action]={actionName}
假设我有一个名为 my_extension
的扩展,在 my_extension 中有一个名为 apiResponse
的插件。
然后我的控制器中有一个名为 sendApiDataAction
的函数。
如何通过普通的 http GET 请求从外部调用此 sendApiDataAction
?
我假设您使用相同的扩展名来调用外部插件。您可以使用流体 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) Using Form:如果您要提交表单,则您有一个表单配置来调用操作。
<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>
希望对您有所帮助!
首先,您需要从您的分机中获取这些信息:
- extensionKey(这很简单,在您的示例中是
myExtension
) - pluginName(这是您在分配操作的
ext_localconf.php
中定义的名称) - actionName(在您的示例中
sendApiData
- 没有action
) - controllerName(即您的操作所在的控制器)
- pageId(这是您的插件实现的页面 ID)
- 命名空间(这是根据您的插件和扩展构建的名称,在您的情况下
tx_myextension_{pluginName}
然后,您可以通过
访问该操作http(s)://your.domain.tld/index.php?id={pageId}&{namespace}[controller]={controllerName}&{namespace}[action]={actionName}