当前位置: 首页 > 知识库问答 >
问题:

如何在TYPO3中转发SwitchableControlllerActions到另一个Controller操作

宗沛
2023-03-14

我的插件配置如下所示;

\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin('Orbit.Navigator', 'mission', [
        \Orbit\Navigator\Controller\SpaceXController::class => 'cpt, cpr, shuttle',
        \Orbit\Navigator\Controller\Conf\FlightController::class => 'pressure,target,timer',
        \Orbit\Navigator\Controller\Conf\WeatherController::class => 'mav,hub',
]);

我有这个设置,

10 = USER_INT
10 {
    userFunc = TYPO3\CMS\Extbase\Core\Bootstrap->run
    extensionName = Navigator
    pluginName = mission
    vendorName = Orbit

    switchableControllerActions {
        SpaceX{
            1 = shuttle
        }
    }
}

请求到达SpaceXController中的shuttleAction()方法。处理后,如何将其转发到FlightController中的timerAction()

使用;

$this->forward('timer', 'Flight', $this->request->getControllerExtensionName(), $this->request->getArguments());

行为像$_POST并导致;

(1/2) #1278450972 TYPO3\CMS\Extbase\Reflection\Exception\UnknownClassException
Class does not exist. Reflection failed.

使用;

$this->redirect('timer', 'Flight', $this->request->getControllerExtensionName(), $this->request->getArguments());

行为类似于$\u GET(重定向到另一个页面),页面抛出一个错误,抱怨“重定向太多”。

我可以转发到同一控制器中的另一个操作,但如何转发到另一控制器中的另一个操作?

共有1个答案

鲁靖
2023-03-14

因此,switchableControllerActions正因为上述原因而被弃用。它在运行时覆盖插件的原始配置。但我要感谢的是,我不会依赖于这种设置。尽管弃用通知中提到了这一点,但它进一步指出,他们正在删除它,因为他们没有遵守插件的范例。引用弃用通知中的话,

switchableControllerActions已被标记为弃用,将在TYPO3的下一个主要版本中删除,可能是11.012.0版本。

switchableControllerActions用于通过打字脚本或插件flexforms覆盖允许的控制器和操作集。虽然这便于在许多不同的用例中重用相同的插件,但它也存在很大的问题,因为它完全覆盖了通过\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin定义的原始配置。

switchableControllerActions因此具有纠正[sic]其移除的不良影响。

首先,switchableControllerActions在运行时覆盖插件的原始配置,这可能取决于与\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin是定义配置的权威方法的想法相矛盾的条件。

使用同一个插件作为许多不同功能的入口点与插件服务于一个特定目的的想法相矛盾。可切换控制器操作允许创建一个中央插件来处理所有事情。

来源:弃用:#89463-弃用切换控件

我个人完全同意这是一个好的举动。

有一种方法可以解决这个问题,那就是TYPO3能够在单个扩展的扩展配置文件(ext_localconf.php)中定义多个插件。有了它,就可以为打字脚本或FlexForm中需要的任何单个操作定义一个专用插件。

 类似资料:
  • 问题内容: 我想从一个视图控制器导航到另一个。如何将以下Objective-C代码转换为Swift? 问题答案: 为第二个视图控制器创建一个swift文件(SecondViewController.swift),并在适当的函数中键入以下内容: 迅捷2+ 斯威夫特4

  • 问题内容: 我通常会看到将Docker容器的端口暴露给主机的解决方案。 就我而言,我想将本地端口从一个容器转发到另一个。假设我在具有 硬编码配置的 容器A 上运行服务, 以访问localhost 3306上的db 。但是我想在 容器B 上运行数据库服务器。 从A-localhost:3306到B-IP:3306的 端口转发的最佳方法是什么? 问题答案: 在您的容器中安装并在启动运行时安装 这将在您

  • 一个用户使用OkHTTP3后如何发送requset?我必须这样做:1)我使用方法发送request1,到服务器;2)服务器用COOKIE发送request1的响应;3)我保存这个COOKIE;4)我用保存的COOKIE发送request2。 我在第4步有个问题。看起来,request2在request1之后发送,在request1保存他的cookie之前。如何化解?我想在请求保存自己的cookie

  • 我在一个类中有一个imageView,在单击imageView时,会出现一个对话框,它有两个选项,可以从相机中获取图像,也可以打开设备的图像库。我想将图像从一个类发送到另一个类,这样它就可以出现在ImageView中。我搜索了很多小时,但我只得到关于从一个类到另一个类的文本数据发送。谁能告诉我从一个类到另一个类的图像发送? 这是来自sender类的代码,它将获取图像。 谢谢你的帮助

  • 在ExtensionBuilder的帮助下,我为TYPO3(7.6.15)创建了一个简单的后端模块。和具有、和。只有,它是模块的主视图,应该如下所示: 现在,我想从,如果可能的话,我希望在视图的模板()中执行此操作。 我感谢所有的帮助,并预祝大家有一个美好的一天!

  • 问题内容: 用Java开发一个简单的井字游戏。 我有一个名为的课程。此类应包含有用的游戏方法。游戏发生在另一个班级。 中的方法是。该方法应该将所有9个按钮(井字游戏板)上的文本设置为空白,再次将它们设置为启用,然后将变量设置为1。 这是它的代码: 是游戏主类中的JButtons数组。 该方法以前在游戏的主要类中使用。但是现在它在不同的类中,它无法到达该类中的按钮并对其进行操作。 我在中创建了get