4


我正在使用tt_news我的 TYPO3 v7.6.18 扩展(刚刚从 6.2.31 升级)并且我遇到了类别树问题。我为类别渲染做了更多的调试tt_news,这是迄今为止的问题:

旧的tca.php看起来像这样:

'类别' => 数组(
    '排除' => 1,
    '标签' => 'LLL:EXT:tt_news/locallang_tca.xml:tt_news.category',
    '配置' => 数组(
        '类型' => '选择',
        'form_type' => '用户',
        'userFunc' => 'tx_ttnews_TCAform_selectTree->renderCategoryFields',
        '树视图' => 1,
        'foreign_table' => 'tt_news_cat',
        'autoSizeMax' => 50,
        'miniitems' => $confArr['requireCategories'] ?1 : 0,
        'maxitems' => 500,
        'MM' => 'tt_news_cat_mm',
    ),
),

这给了我错误的结果,意思是,我没有得到一棵树,而是一个多选。现在,当我将 type 更改为user时,我收到此错误:

致命错误:在第 167 行的 /home/portal/typo3project/typo3conf/ext/tt_news/lib/class.tx_ttnews_TCAform_selectTree.php 中调用未定义的方法 TYPO3\CMS\Backend\Form\Element\UserElement::addSelectOptionsToItemArray()

我检查了类tx_ttnews_TCAform_selectTree方法中的行renderCategoryFieldsand,它看起来像这样:

$selItems = $fobj->addSelectOptionsToItemArray($fobj->initItemArray($this->PA['fieldConf']),$this->PA['fieldConf'],$fobj->setTSconfig($table,$row) ,$字段);

$fobj是函数定义中的引用:它function renderCategoryFields(&$PA, &$fobj)似乎在某个地方定义错误,因为addSelectOptionsToItemArray它位于FormEngine不是 UserElement.

由于该方法在 tca 中被调用,就像tx_ttnews_TCAform_selectTree->renderCategoryFields我无法更改类一样,它正在使用。

任何想法如何解决这一问题?

4

1 回答 1

3

从 TYPO3 7 开始,您无需定义自定义用户函数即可将列表呈现为树。选择类型字段有一个renderType TCA 配置选项,可以通过selectTree值定义树渲染。

所以配置应该如下所示:

'category' => Array(
    'exclude' => 1,
    'label'   => 'LLL:EXT:tt_news/locallang_tca.xml:tt_news.category',
    'config'  => Array(
        'type'          => 'select',
        'renderType'    => 'selectTree',
        'foreign_table' => 'tt_news_cat',
        'autoSizeMax'   => 50,
        'minitems'      => $confArr['requireCategories'] ? 1 : 0,
        'maxitems'      => 500,
        'MM'            => 'tt_news_cat_mm',
        'treeConfig'    => array(
            'parentField' => 'parent_category',
        ),
    ),
),

此外,您可能希望使用treeConfig 配置选项进行一些视觉调整。

于 2017-05-31T12:42:35.373 回答