Метка TYPO3 TCA с UserFun c - как получить отформатированную метку HTML? - PullRequest
0 голосов
/ 21 апреля 2020

Я хочу отформатировать заголовок, отображаемый в списке элементов TCA, который может содержать текст c. Но что бы я ни пытался, я получаю только неотформатированный текст - даже из текстовых полей RTE.

Моя базовая информация - "partA", "partB", "part C", и мне нужен заголовок, такой как "partA: часть C - часть 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'],
    ],
];

И UF:

<?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 приводит к получению строки в правильном порядке - но без текстовых форматов, таких как <i> et c, но с отображением их в виде текста. Я уверен, что что-то упустил, но я не могу понять, что это такое - я также не смог найти фрагменты кода или примеры, показывающие правильный путь - и документы из TYPO3, говорящие только то, что существует formattedLabel_userFunc и у него есть варианты - но нет правильного примера там. Надеюсь, ты сможешь мне помочь. Спасибо!

1 Ответ

0 голосов
/ 22 апреля 2020

в документации для formattedlabel_userfun c вы можете найти:

[...] вернуть форматированный HTML для метки и использовать только для метки встроенных (IRRE) записей .

и для label_userfun c есть предупреждение:

Название позже передается через htmlspecialchars (), поэтому может не включать форматирование HTML.

...