preProcess() hook invoking in some extensions in PageLayoutViewDrawItemHook fails
I noticed, that at least in two extension in my test system (FLUX and tx_damttcontent) there were errors in the page module display in the backend,
that had the same structure:
<MyExtensionHookClass>::preProcess() must be compatible with that of TYPO3\CMS\Backend\View\PageLayoutViewDrawItemHookInterface::preProcess()...
I looked into both extension hook classes and found the parameters be the same and are matching the interfaces' declaration:
Extensions preProcess() parameters: tx_cms_layout &$parentObject, &$drawItem, &$headerContent, &$itemContent, array &$row
Core Interface Class requirements: \TYPO3\CMS\Backend\View\PageLayoutView &$parentObject, &$drawItem, &$headerContent, &$itemContent, array &$row
the tx_cms_layout object type is also mapped on the right namespace path.
Can anybody investigate, why this error occurs although the preProcess-functions in the extensions have the right declaration ?
I consider this a major issue for all extensions that hook into the backend page module.
#1 Updated by Philipp Maas over 6 years ago
I've noticed a similar issue with the gridelements extension:
Fatal error: Declaration of tx_gridelements_drawItemHook::preProcess() must be compatible with that of TYPO3\CMS\Backend\View\PageLayoutViewDrawItemHookInterface::preProcess() in ...
UPDATE 2012-11-28 13:36: the issue still exists in final release (6.0.0)
#3 Updated by Helmut Hummel about 6 years ago
- Status changed from New to On Hold
- Priority changed from Must have to Won't have this time
There a re three ways you can get around that problem:
- Update PHP to any version higher than 5.3.6 (which is a requirement for TYPO3 6.0)
- Change the hook registration that it does not include a filename (make sure it is found by the autoloader) so that the compatibility autoloader can step in and rewrite the class
- Change the class to have the new interface name when used with 6.0