如何从 TypoScript 调用 extbase 操作

Joh*_*ler 3 typo3 typoscript extbase typo3-10.x

这个问题已经通过博客和互联网上的其他平台被多次提出和回答。然而,这些解决方案似乎不适用于 TYPO3 版本 10(我认为也适用于版本 7、8 和 9)。

我有一个SpaceController带有操作的类shuttleAction,该类在 ext_localconf.php 文件中已正确注册且未缓存。

这是我尝试过的:

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

    switchableControllerActions {
        Space{
            1 = shuttle
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我收到错误;

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

类、插件、扩展和供应商确实存在,并且实际上正在将它们用于其他有效的操作。但是,无法通过课堂上的打字稿选择操作。

我已经对其他控制器和操作进行了相同的尝试,但似乎没有一个适用于此方法。

我正在尝试通过 TypoScript 执行操作。如何从 TypoScript 调用控制器的操作?我正在使用 TYPO3 版本 10。我相信版本 8 或 9 的方法也适用于版本 10。我已经对这些版本进行了相同的尝试,但没有成功。

以下方法有效,但选择第一个(默认)操作。

10 = USER
10 {

    userFunc = TYPO3\CMS\Extbase\Core\Bootstrap->run
    vendorName = Orbit
    extensionName = Navigator
    pluginName = mission
}
Run Code Online (Sandbox Code Playgroud)

如果我添加controllerand action,action则会被忽略,而采用 default action。

10 = USER
10 {

    userFunc = TYPO3\CMS\Extbase\Core\Bootstrap->run
    vendorName = Orbit
    extensionName = Navigator
    pluginName = mission
    controller = Space
    action = shuttle
}
Run Code Online (Sandbox Code Playgroud)

我想选择要执行的具体操作。

Joh*_*ler 6

经过几个小时的搜索和实验,很明显,目前无法通过 TypoScript 选择操作。不过,有一个解决方法。

对于任何寻求解决此问题的人来说,

  1. 在 ext_localconf.php 中为您想要的控制器和操作创建一个新的插件条目。
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
    'yourExtension',
    'yourPlugin1',
    [
        'FooController' => 'list'
    ]
);

\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
    'yourExtension',
    'yourPlugin2',
    [
        'FooController' => 'show'
    ]
);
Run Code Online (Sandbox Code Playgroud)
  1. 确保您想要的操作是列表中的第一个(默认)操作。如果您在一个插件中放置多个操作,并且您将尝试执行任何其他操作,那么首先从 TypoScript 它将无法工作。
  2. 在您的 TypoScript 中引用该插件。

希望它能帮助某人。

欢迎任何有更好解决方案的人提供或改进此解决方案。

  • 您可以在 forge.typo3.org 上添加票证,因为我怀疑它不是故意删除选择操作的可能性的。 (2认同)
  • 可切换控制器操作已正式弃用 https://docs.typo3.org/c/typo3/cms-core/main/en-us/Changelog/10.3/Deprecation-89463-SwitchableControllerActions.html (2认同)