现在我正在使用TYPO3 6.2beta5版本,在该网站中我需要为扩展名sr_feuser_register包含一个XClass。它是一个“PI_Base”扩展,我尝试了以下方法来包含XClass,但不再工作了;
- > localconf.php
$ GLOBALS [ 'TYPO3_CONF_VARS'] [ 'SYS'] [ '对象'] [ 'tx_srfeuserregister_display'] = array('className'=>'ux_tx_srfeuserregister_display');
- > ext_autoload.php
$ extensionPath = \ TYPO3 \ CMS \核心\实用\ ExtensionManagementUtility :: extPath( 'extname');
返回数组('ux_tx_srfeuserregister_display'=> $ extensionPath.'class.ux_tx_srfeuserregister_display.php',);
有人知道解决方案吗?
由于
答案 0 :(得分:1)
您的代码对于非命名空间的类是正确的。 您的代码无法工作的原因如下:
1) xclass尚未自动加载 - 因为您尚未清除“所有缓存”。自动加载器缓存所有路径!如果加载的任何ext_autoload.php文件(所有扩展名)中存在错误,则Additionaly自动加载会部分中断。你不会注意到在前端,因为没有异常和PHP错误将被抛出。
2)原始类的实例在不使用GeneralUtility :: makeInstance()的情况下实例化,但是直接(new tx_srfeuserregister_display)
3)实际上扩展了类,但是想要重载的方法是以静态方式使用的(class :: method())
4)有时对象数组中的类键与你可能期望的不同(这里是$ GLOBALS ['TYPO3_CONF_VARS'] ['SYS'] ['对象'] [' tx_srfeuserregister_display ' ])。当我迫切希望找到XCLASS不起作用的原因时,我尝试devlog由GeneralUtility :: getImplementationForClass()解析的类名。
希望以上有些帮助。
答案 1 :(得分:0)
这是由于缓存造成的。我的代码是正确的,我清除了所有的typo3temp缓存,它现在正在运行。