TYPO3 - TCA组tt_content - 数组?

时间:2017-05-17 09:13:59

标签: php arrays xml typo3 fluid

我通过XML获得了正常的TYPO3 TCA组元素:

<tabNavi>
    <ROOT>
        <TCEforms>
            <sheetTitle>Tab Navi</sheetTitle>
        </TCEforms>
        <type>array</type>
        <el>
            <!-- Tab Navi Settings -->
            <settings.tabNavi.headlines>
                <TCEforms>
                    <label>Auswahl der Tabs</label>
                    <config>
                        <type>group</type>
                        <internal_type>db</internal_type>
                        <allowed>tt_content</allowed>
                        <size>5</size>
                        <minitems>0</minitems>
                        <maxitems>6</maxitems>
                        <show_thumbs>1</show_thumbs>
                        <wizards>
                            <_PADDING>1</_PADDING>
                            <_VERTICAL>1</_VERTICAL>
                            <suggest>
                                <type>suggest</type>
                                <default>
                                    <searchWholePhrase>1</searchWholePhrase>
                                </default>
                            </suggest>
                        </wizards>
                    </config>
                </TCEforms>
            </settings.tabNavi.headlines>
        </el>
    </ROOT>
</tabNavi>

这里是控制器PHP:

class ElementsController extends BaseController {

    /**
    * @var \TYPO3\CMS\Extbase\Object\ObjectManager
    * @inject
    */
    protected $objectManager;

    /**
    */
    public function setObjectManager($objectManager)
    {
        $this->objectManager = $objectManager;
    }

    /**
    * @return mixed
    */
    public function getObjectManager()
    {
        return $this->objectManager;
    }

    /**
    * @return void
    */
    public function tabNaviAction()
    {

    }
}

这里是TYPO3 FLUID代码:

<nav class="content-nav-tabs sticky affix-top">
    <ul class="nav nav-tabs item-detail-tabs">
        <li role="presentation" class="active"><a href="#top" rel="nofollow" title="Übersicht">Übersicht</a></li>
        <f:debug>{settings.tabNavi.headlines}</f:debug>


        <f:for each="{settings.tabNavi.headlines}" as="navTabsItem">
            <li role="presentation"><a href="#c{navTabsItem.uid}" rel="nofollow" title="{navTabsItem.header}">{navTabsItem.header}</a></li>
        </f:for>
    </ul>
</nav>

但是对于正确的输出我需要一个ARRAY,而不是一个字符串。如果我使用Vhs“v:iterator.explode”它对于来自tt_content的uid来说效果很好,但是我不需要uid,我需要uid后面的对象。

我得到的只是正常的逗号-UID列表:https://docs.typo3.org/typo3cms/TCAReference/6.2/Reference/Columns/Group/Index.html#the-comma-list-method-default

我该怎么办?我需要在Controller中使用另一个php吗?谢谢!

2 个答案:

答案 0 :(得分:1)

使用     五:content.get 在循环中查看助手并将tt_content uid列表设置为参数

<f:for each="{v:content.get(contentUids: {settings.tabNavi.headlines -> v:iterator.explode()}, render: 'FALSE')}" as="element">
  …
</f:for>

这样的事情,我现在自己都没有尝试过,但是你明白了...... hth

答案 1 :(得分:0)

这很好用:

<f:for each="{v:content.get(contentUids: '{settings.tabNavi.headlines -> v:iterator.explode()}', render: 'FALSE')}" as="navTabsItem">
    {navTabsItem.header}
</f:for>

谢谢@Wolfgang