如何从 TypoScript 调用 extbase 操作
How to call extbase action from TypoScript
这个问题已经通过互联网上的博客和其他平台被多次询问和回答。但是,这些解决方案似乎不适用于 TYPO3 版本 10(我认为也适用于版本 7、8 和 9)。
我有一个 class 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
}
}
}
我收到错误;
(1/2) #1278450972 TYPO3\CMS\Extbase\Reflection\Exception\UnknownClassException
Class does not exist. Reflection failed.
class、插件、扩展和供应商确实存在,实际上我正在将它们用于其他有效的操作。但是,无法通过 class.
中的拼写错误选择操作
我已经对其他控制器和动作进行了相同的尝试,但 none 似乎适用于此方法。
我正在尝试通过 TypoScript 执行操作。如何从 TypoScript 调用控制器的操作?我正在使用 TYPO3 版本 10。我相信版本 8 或 9 的方法也适用于版本 10。我对这些版本进行了相同的尝试但无济于事。
以下方法有效,但会选择第一个(默认)操作。
10 = USER
10 {
userFunc = TYPO3\CMS\Extbase\Core\Bootstrap->run
vendorName = Orbit
extensionName = Navigator
pluginName = mission
}
如果我添加 controller
和 action
,action
将被忽略以支持默认值 action
。
10 = USER
10 {
userFunc = TYPO3\CMS\Extbase\Core\Bootstrap->run
vendorName = Orbit
extensionName = Navigator
pluginName = mission
controller = Space
action = shuttle
}
我想选择要执行的具体操作。
经过数小时的搜索和实验,很明显目前无法通过 TypoScript select 执行操作。但是,有一个解决方法。
任何正在寻找此问题解决方案的人,
- 在您的 ext_localconf.php 中为您想要的控制器和操作创建一个新的插件条目。
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
'yourExtension',
'yourPlugin1',
[
'FooController' => 'list'
]
);
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
'yourExtension',
'yourPlugin2',
[
'FooController' => 'show'
]
);
- 确保您想要的操作是列表中的第一个(默认)操作。
如果你在一个插件中放置了一个以上的动作,你将尝试执行任何其他动作,然后首先从 TypoScript 执行它是行不通的。
- 在您的 TypoScript 中引用该插件。
希望对大家有所帮助。
欢迎有更好解决方案的朋友提供或改进这个
这个问题已经通过互联网上的博客和其他平台被多次询问和回答。但是,这些解决方案似乎不适用于 TYPO3 版本 10(我认为也适用于版本 7、8 和 9)。
我有一个 class 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
}
}
}
我收到错误;
(1/2) #1278450972 TYPO3\CMS\Extbase\Reflection\Exception\UnknownClassException
Class does not exist. Reflection failed.
class、插件、扩展和供应商确实存在,实际上我正在将它们用于其他有效的操作。但是,无法通过 class.
中的拼写错误选择操作我已经对其他控制器和动作进行了相同的尝试,但 none 似乎适用于此方法。
我正在尝试通过 TypoScript 执行操作。如何从 TypoScript 调用控制器的操作?我正在使用 TYPO3 版本 10。我相信版本 8 或 9 的方法也适用于版本 10。我对这些版本进行了相同的尝试但无济于事。
以下方法有效,但会选择第一个(默认)操作。
10 = USER
10 {
userFunc = TYPO3\CMS\Extbase\Core\Bootstrap->run
vendorName = Orbit
extensionName = Navigator
pluginName = mission
}
如果我添加 controller
和 action
,action
将被忽略以支持默认值 action
。
10 = USER
10 {
userFunc = TYPO3\CMS\Extbase\Core\Bootstrap->run
vendorName = Orbit
extensionName = Navigator
pluginName = mission
controller = Space
action = shuttle
}
我想选择要执行的具体操作。
经过数小时的搜索和实验,很明显目前无法通过 TypoScript select 执行操作。但是,有一个解决方法。
任何正在寻找此问题解决方案的人,
- 在您的 ext_localconf.php 中为您想要的控制器和操作创建一个新的插件条目。
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
'yourExtension',
'yourPlugin1',
[
'FooController' => 'list'
]
);
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
'yourExtension',
'yourPlugin2',
[
'FooController' => 'show'
]
);
- 确保您想要的操作是列表中的第一个(默认)操作。 如果你在一个插件中放置了一个以上的动作,你将尝试执行任何其他动作,然后首先从 TypoScript 执行它是行不通的。
- 在您的 TypoScript 中引用该插件。
希望对大家有所帮助。
欢迎有更好解决方案的朋友提供或改进这个