【问题标题】:TYPO3 error «action is not allowed by this plugin»TYPO3 错误 «此插件不允许操作»
【发布时间】:2020-07-26 18:43:52
【问题描述】:

我正在尝试对我的控制器进行 Ajax 调用。

我在表单中放置了一个隐藏链接,如下所示:

<f:link.action action="ajaxCheckEmailExistsFE" controller="Profiles" class="hidden" id="checkEmailExistsAjaxLink"></f:link.action>

在我的 Javascript 中,我从这个链接中提取了 href:

var target = $('#checkEmailExistsAjaxLink').attr('href');

然后使用 jQuery 的 $.post 方法发送我的请求。

当链接被调用时,我得到了臭名昭著的错误

The action \"ajaxCheckEmailExistsFE\" (controller \"Profiles\") is not allowed by this plugin. Please check TYPO3\\CMS\\Extbase\\Utility\\ExtensionUtility::configurePlugin() in your ext_localconf.php

但是ext_localconf.php中明确设置了动作!

\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
    'MyVendor.MyExt',
    'MyPlugin',
    [
        'Profiles' => 'editFE, showFE, updateFE, ajaxCheckEmailExistsFE'
    ],
    // non-cacheable actions
    [
        'Profiles' => 'editFE, showFE, updateFE, ajaxCheckEmailExistsFE'
    ]
);

相同的工作流程在 BE 模式下完美运行。

我在 updateFE-Action 上遇到了同样的问题。提交表单后,我得到了与上面相同的错误。我不得不将它添加到我的 flexform (-> &lt;numIndex index="1"&gt;Profiles-&amp;gt;editFE;Profiles-&amp;gt;updateFE&lt;/numIndex&gt;) 中的 switchable-controller-actions - 这同样很奇怪。

为什么会这样???

这是 TYPO3 9.5

[编辑] 目前,我最终将操作添加到可切换控制器操作,就像我为 updateFE-Action 所做的那样。 但是,这非常麻烦,因为每次添加新操作时我都必须在页面上设置插件操作。 如果有人有更好的解决方案,我将非常感谢!

【问题讨论】:

    标签: fluid extbase typo3-9.x


    【解决方案1】:

    确实,这很麻烦,但它也是 TYPO3 extbase 控制器中switchable actions唯一工作方式。此检查旨在确保特定操作仅在您使用“正确”插件时才可调用,因为您可能在一个扩展程序中拥有多个插件,然后可能会使用不同的操作。所以最后,这个特性可以防止一个插件调用一个只能在相同扩展的另一个插件中调用的动作。 如果你不需要编辑器来切换你的插件的动作集,你可以从你的 flexform 中删除这个配置部分,这将解决编辑这个新的需要行动。

    作为一个著名的例子,看看config of the news extension。有一个插件允许列表+详细视图,而不同的插件仅用于列表或仅详细视图。因此,作为管理员,您必须为不同的新闻设置选择构建您的网站(路由和模板)。

    即使在TYPO3社区,也有voices to get rid of this feature,所以说不定会在以后的版本中解决。

    【讨论】:

    • 感谢您的澄清!让我们希望他们能在未来的版本中改变这一点。
    猜你喜欢
    • 2012-07-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-24
    • 1970-01-01
    • 1970-01-01
    • 2021-01-14
    • 2021-11-18
    • 2012-06-11
    相关资源
    最近更新 更多