尝试读取XML数据时为空值


Empty value when trying to read XML data

在我的插件中,我试图使用Typo3函数pi_getLL()从文件locallang.xml中读取数据。

PHP

$this->pi_loadLL();
var_dump($this->pi_getLL('test'));

XML

<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<T3locallang>
    <meta type="array">
        <type>module</type>
        <description>Language labels for plugin &quot;tx_fzswettbewerbsg_pi2&quot;</description>
    </meta>
    <data type="array">
        <languageKey index="default" type="array">
            <label index="test">German</label>
        </languageKey>
        <languageKey index="fr" type="array">
            <label index="test">France</label> 
        </languageKey>
    </data>
</T3locallang>

当我运行这个脚本时,我总是得到一个空字符串:

string(0)"

为什么var_dump()不返回我的XML中的值?

*TYPO3 v4.7x的以下解决方案

这必须像你的问题一样工作:

public function main($content, array $conf) {
   $this->conf = $conf;
   $this->pi_loadLL();
   $this->pi_getLL('label_index_name', 'alternative-text', 0); // 0 or 1 If TRUE, the output label is passed through htmlspecialchars() 
}

您可以使用全局变量获取标签,例如:引用

public function main($content, array $conf) {
    $GLOBALS['LANG']->sL('LLL:EXT:your_ext/locallang.xml:label_index_name'); 
    // OR
    $LL = $this->includeLocalLang();
    $GLOBALS['LANG']->getLLL('label_index_name', $LL);
}
public function includeLocalLang() {
    $llFile = t3lib_extMgm::extPath('your_ext') . 'locallang.xml';
    $version = class_exists('t3lib_utility_VersionNumber')
            ? t3lib_utility_VersionNumber::convertVersionNumberToInteger(TYPO3_version)
            : t3lib_div::int_from_ver(TYPO3_version);
    if ($version < 4006000) {
        $LOCAL_LANG = t3lib_div::readLLXMLfile($llFile, $GLOBALS['LANG']->lang);
    } else {
        /** @var $llxmlParser t3lib_l10n_parser_Llxml */
        $llxmlParser = t3lib_div::makeInstance('t3lib_l10n_parser_Llxml');
        $LOCAL_LANG = $llxmlParser->getParsedData($llFile, $GLOBALS['LANG']->lang);
    }
    return $LOCAL_LANG;
}

另一个把戏;)

Tx_Extbase_Utility_Localization::translate('label_index_name', $extensionName, $arguments=NULL);