如何从 TypoScript 调用 extbase 操作



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

我有一个带有操作shuttleAction的类SpaceController,这些操作ext_localconf.php文件中注册良好且未缓存。

这是我尝试过的:

10 = USER_INT
10 {
userFunc = TYPO3CMSExtbaseCoreBootstrap->run
extensionName = Navigator
pluginName = mission
vendorName = Orbit
switchableControllerActions {
Space{
1 = shuttle
}
}
}

我收到错误;

(1/2) #1278450972 TYPO3CMSExtbaseReflectionExceptionUnknownClassException
Class does not exist. Reflection failed.

类、插件、扩展和供应商确实存在,实际上正在将它们用于其他有效的操作。但是,无法通过类中的拼写错误来选择操作。

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

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

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

10 = USER
10 {
userFunc = TYPO3CMSExtbaseCoreBootstrap->run
vendorName = Orbit
extensionName = Navigator
pluginName = mission
}

如果我添加controlleractionaction会被忽略,转而支持默认action

10 = USER
10 {
userFunc = TYPO3CMSExtbaseCoreBootstrap->run
vendorName = Orbit
extensionName = Navigator
pluginName = mission
controller = Space
action = shuttle
}

我想选择要执行的特定操作。

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

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

  1. 在ext_localconf.php中为所需的控制器和操作创建一个新的插件条目。
TYPO3CMSExtbaseUtilityExtensionUtility::configurePlugin(
'yourExtension',
'yourPlugin1',
[
'FooController' => 'list'
]
);
TYPO3CMSExtbaseUtilityExtensionUtility::configurePlugin(
'yourExtension',
'yourPlugin2',
[
'FooController' => 'show'
]
);
  1. 确保所需的操作是列表中的第一个(默认(操作。 如果您在一个插件中放置多个操作,并且您将尝试执行任何其他操作,那么首先从 TypoScript 中它将不起作用。
  2. 在您的 TypoScript 中引用该插件。

希望它对某人有所帮助。

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

最新更新