在选择框上将TCPO更改保存在TYPO3中

泰德·洛根(Ted Logan)

我在我的TCA中创建了一个新字段。我想列出所有文章并选择其中一篇,以将该文章设置为顶级文章。

这些文章具有UID,数据库具有称为istoparticle的列。tx_vendor_domain_model_article是包含所有文章信息的表。

我添加了一个TCA列。

\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns('tt_content', array(
    'tx_test_istoparticle' => array(
        'exclude' => 1,
        'onChange' => 'reload',
        'label' => 'Top Article',
        'l10n_mode' => 'exclude',
        'config' => array(
            'type' => 'select',
            'itemsProcFunc' => \Vendor\MyArticles\Hooks\Backend\Preview\ArticleRenderer::class . '->getArticleTitle',

        )
    ),
));

具有用户功能

public function getTopArticles($param){
    $pid = $param['row']['pid'];
    $articles = $this->getArticles($pid);

    foreach ($articles as $article) {

        $record = BackendUtility::getRecord('tx_vendor_domain_model_article', $article->getUid());
        $title = $record['header'];
        $param['items'][][] = $title;
    }
}

顺便说一句:$ record具有我需要的所有信息,UID,正文等。但是我只能将标题存储在数组中!现在,我在后端的选择框中列出了所有标题。

如果要在后端选择文章,我该怎么做才能保存粒子?

TCA是否有onChange方法?如果选择一个,如何获得Uid之类的信息?

MRF

TCA配置中的项目应至少包含两个元素-第一个是标签,第二个是值。还有更多选择,但我认为您不需要。您可以在这里阅读有关它们的信息:https : //docs.typo3.org/typo3cms/TCAReference/8.7/ColumnsConfig/Type/Select.html#items

这意味着您的usefFunc应该如下所示:

public function getTopArticles(&$param){
    $pid = $param['row']['pid'];
    $teasers = $this->getArticles($pid);

    foreach ($articles as $article) {

        $record = BackendUtility::getRecord('tx_vendor_domain_model_article', $article->getUid());
        $param['items'][] = [
            $record['header'],
            $record['uid'],
        ]
    }
}

是的,onChangeTCA中具有功能:https : //docs.typo3.org/typo3cms/TCAReference/8.7/Columns/Index.html? highlight = onchange# onchange

如果您使用的TYPO3版本高于8.6,则需要requestUpdate根据以下内容进行查找https : //docs.typo3.org/typo3cms/extensions/core/8.7/Changelog/8.6/Deprecation-78899-TCACtrlFieldRequestUpdateDropped.html

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章