【问题标题】:TYPO3 Extbase - How to call a controller action from externalTYPO3 Extbase - 如何从外部调用控制器操作
【发布时间】:2019-01-09 20:57:53
【问题描述】:

假设我有一个名为 my_extension 的扩展,在 my_extension 中有一个名为 apiResponse 的插件。

然后我的控制器中有一个名为 sendApiDataAction 的函数。

如何通过通常的 http GET 请求从外部调用此 sendApiDataAction

【问题讨论】:

    标签: php typo3 extbase


    【解决方案1】:

    首先,您需要扩展程序中的这些信息:

    • 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}

    【讨论】:

    • 非常感谢,但是如果没有 pageId,因为控制器没有集成在页面上,因为它只是一个 API?
    • 如果你想在没有pageId的情况下使用它,我建议使用页面类型。
    【解决方案2】:

    我假设您使用相同的扩展名来调用外部插件。您可以使用流体视图助手 为调用控制器操作创建 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>
    

    希望对您有所帮助!

    【讨论】:

    • 感谢您的帮助,我并不是指流畅的 ViewHelper。我需要从另一个没有使用typo3 或fluid 的网站调用该链接。
    • f:uri.action创建链接并使用外部网站的URL
    猜你喜欢
    • 1970-01-01
    • 2016-12-16
    • 1970-01-01
    • 1970-01-01
    • 2021-04-26
    • 1970-01-01
    • 1970-01-01
    • 2019-09-22
    • 1970-01-01
    相关资源
    最近更新 更多