【问题标题】:TYPO3 TCA label with UserFunc - how to get HTML formatted label?带有 UserFunc 的 TYPO3 TCA 标签 - 如何获取 HTML 格式的标签?
【发布时间】:2026-02-04 20:45:02
【问题描述】:

我想格式化显示在 TCA 项目列表中的标题,其中可以包含斜体文本。但无论我尝试什么,我都只能得到未格式化的文本——即使来自 RTE 文本字段。

我的基本信息是“partA”、“partB”、“partC”,我需要一个像“partA : partC - part B”这样的标题

到目前为止我的代码:

<?php
return [
    'ctrl' => [
        'title' => 'LLL:EXT:myext/Resources/Private/Language/myext.xlf:tx_myext_domain_model_myitem',
        'label' => 'partC',
        'label_alt' => 'partA',
        'formattedLabel_userFunc' => T395\myExt\Classes\UserFuncs\MyBEUserFuncs::class.'->getFullMyitemTitle',
        'formattedLabel_userFunc_options' => [
            'sys_file' => [
                'partC','partA','partB'
            ]
        ],
        'iconfile' => 'fileadmin/Resource/icons/svgs/myext.svg',
    ],
    'columns' => [
        'partC' => [
            'label' => 'LLL:EXT:myext/Resources/Private/Language/myext.xlf:tx_myext_domain_model_myitem.partC',
            'config' => [
                'type' => 'text',
                'enableRichtext' => true,
            ],
        ],
        'partA' => [
            'label' => 'LLL:EXT:myext/Resources/Private/Language/myext.xlf:tx_myext_domain_model_myitem.partA',
            'config' => [
                'type' => 'input',
                'size' => '5',
                'eval' => 'trim',
            ],
        ],
        'partB' => [
            'label' => 'LLL:EXT:myext/Resources/Private/Language/myext.xlf:tx_myext_domain_model_myitem.partC',
            'config' => [
                'type' => 'input',
                'size' => '5',
                'eval' => 'trim',
            ],
        ],
    ],
    'types' => [
        '0' => ['showitem' => 'partA,partB,partC'],
    ],
];

还有用友:

<?php

T395\myExt\Classes\UserFuncs;

class MyBEUserFuncs
{   
    public function getFullMyitemTitle(&$params, &$pObj)
    {
        echo "Hello World!";
        $params['title'] = $params['row']['partA'].' : '.$params['row']['partC'].' - '.$params['row']['partB'];
    }
}

即使echo 也没有显示。将 formattedLabel_userFunc 更改为 label_userFunc 会导致以正确的顺序获取字符串 - 但没有任何文本格式,如 &lt;i&gt; 等,但将它们显示为文本。我敢肯定,我错过了一些东西,但我不知道它是什么——我也找不到任何代码 sn-ps 或显示正确方式的示例——来自 TYPO3 的文档只说存在@ 987654327@ 并且它有选项 - 但那里没有合适的例子。希望您能够帮助我。谢谢!

【问题讨论】:

    标签: typo3 typo3-9.x


    【解决方案1】:

    documentation for formattedlabel_userfunc你可以找到:

    [...] 为标签返回格式化的 HTML,并且仅用于内联 (IRRE) 记录的标签

    对于label_userfunc 有警告:

    标题稍后通过 htmlspecialchars() 传递,因此它可能不包含任何 HTML 格式。

    【讨论】:

    • 好吧,这对我没有任何帮助。文档中的内容大致相同,这对我没有帮助,因为没有合适的示例。
    • 您将找不到示例,因为这是不可能的。文件中明确说明。
    • 好的,我现在随机发现了我的问题,同时正在寻找另一个解决方案。有一个特定的列类型“内联”,它采用格式化的 UF - 不幸的是,格式化 UF 的描述中没有说明,也没有链接到它所引用的内联列元素。现在功能的方式就很清楚了。我误解了“内联”一词,因为我认为它通常是指标题与 CSS 属性“内联”。对于那些不熟悉 TCA 编程的人来说,一开始并不太清楚这种区别。
    • 一个适当的例子可以理解,格式化的 UF 仅适用于内联列项目。还是谢谢你的回答:)
    • TYPO3 文档目前正在重建,但大多数情况下仍然缺少示例。每个人都可以通过 pullrequest 来支持文档团队。只需按下每个手册页顶部的“在 github 上编辑”按钮即可。