Heute bin ich auf folgendes Problem gestoßen:
Im TYPO3-Backend wollte ich in der Seiten-Ansicht ein neues Inhaltselement anlegen. Nach einem Klick auf das entsprechende Icon wurde die Seite jedoch leer und nichts weiter passierte.
Nach einer kurzen Recherche im Apache-Errorlog fand ich folgenden Fehler:
PHP Fatal error: Call to undefined method TYPO3\\CMS\\Core\\Utility\\General
Utility::readLLXMLfile() in /srv/www/htdocs/typo3conf/ext/we_gmanfahrt/pi1/
class.tx_wegmanfahrt_pi1_wizicon.php on line 61, referer: ...
Es stellte sich heraus, dass die Extension „we_gmanfahrt“ eine veraltete Funktion namens „t3lib_div::readLLXMLfile()“ verwendete.
Diese Funktion ist seit TYPO3 4.6 veraltet und wurde in Version 6.0 entfernt. Seit dem sollte die Funktion „t3lib_l10n_parser_Llxml::getParsedData()“ verwendet werden.
Gesagt, getan.
Die Übergabeparameter sind gleich geblieben und somit sollte durch einen Tausch der Funktionen das Problem behoben sein.
Sollte…den das Phänomen beim Anlegen eines neuen Inhaltselements blieb.
Im Errorlog fand sich nun ein neuer Eintrag:
PHP Fatal error: Call to undefined method tx_wegmanfahrt_pi1_wizicon:: getCharset() in /srv/www/typo3/typo3_src-6.1.0/typo3/sysext/core/Classes/ Localization/Parser/LocallangXmlParser.php on line 54, referer: ...
Wie sich herausstellte, hängt dies mit dem „neuen“ TYPO3 zusammen. Eine Lösung wurde von Thomas Dudzak im Bugtracker bereitgestellt:
/**
* Reads the [extDir]/locallang.xml and returns the $LOCAL_LANG array found in that file.
*
* @return The array with language labels
*/
function includeLocalLang() {
$llFile = t3lib_extMgm::extPath('td_calendar').'locallang.xml';
$version = class_exists('t3lib_utility_VersionNumber')
? t3lib_utility_VersionNumber::convertVersionNumberToInteger(TYPO3_version)
: t3lib_div::int_from_ver(TYPO3_version);
if ($version >= 4007000) {
$object = t3lib_div::makeInstance('t3lib_l10n_parser_Llxml');
$LOCAL_LANG = $object->getParsedData($llFile, $GLOBALS['LANG']->lang);
} else {
$LOCAL_LANG = t3lib_div::readLLXMLfile($llFile, $GLOBALS['LANG']->lang);
}
return $LOCAL_LANG;
}