我目前正在尝试编写一个Hook来为Flexform添加额外的字段。因此,我遵循了本教程:https://docs.typo3.org/typo3cms/extensions/news/DeveloperManual/ExtendNews/ExtendFlexforms/Index.html?fref=gc&dti=250938618364487#extend-flexforms-with-custom-fields
但是当我转到包含Flexform选项的后端页面时,我收到以下错误: 找不到类'ID \ SearchBarAdditional \ Hooks \ FlexFormHook'。
我在ext_localconf中注册Hook,如下所示:
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS'][\TYPO3\CMS\Core\Configuration\FlexForm\FlexFormTools::class]['flexParsing'][] = \ID\SearchBarAdditional\Hooks\FlexFormHook::class;
我的Hook文件在这里:typo3conf / ext / search_bar_additional / Classes / Hooks 并以这种方式初始化:
namespace ID\SearchBarAdditional\Hooks;
class FlexFormHook { /* ... */
所以在我看来一切都在正确的地方,应该可以工作,但我仍然得到TYPO3 \ CMS \ Core \ Utility \ GeneralUtility :: makeInstance(“ID \ SearchBarAdditional \ Hooks \ FlexFormHook”)失败的错误。
你们有什么想法,可能有什么不对吗?我是否必须在\ TYPO3 \ CMS \ Extbase \ Utility \ ExtensionUtility :: configurePlugin(或类似的东西)中注册Hook(因为发布的代码实际上是我唯一做过的事情)?
答案 0 :(得分:2)
这是典型的类加载错误。检查是否已将PHP名称空间添加到composer autoloading和/或ext_emconf.php
,并确保根据PSR-4正确命名了文件名。如果有疑问,你可以检查由vendorer / composer中的composer生成的类加载映射文件(如果你使用composer进行类加载,你绝对应该这样做。)
答案 1 :(得分:0)
我发现了错误:我的Hook确实没有被加载。我试图在ext_localconf.php中“包含”它,现在它正在运行。 但由于这当然是一个非常难看的解决方案,我发布了第二个问题,如何在这里加载一个钩子:Typo3 8.X - autoload Hook
感谢您的帮助!!!