TYPO3 6.2中的XClass

时间:2014-03-11 06:33:22

标签: php typo3 typoscript

现在我正在使用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',);

有人知道解决方案吗?

由于

2 个答案:

答案 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缓存,它现在正在运行。