TYPO3 Extbase:如何对子对象进行排序

LuJ*_*aks 4 typo3 extbase

我有一个Extbase模型文章和一个1:n关系产品。在条款TCA中,我配置了一个内联字段。我想在我的文章模板中显示所有相关产品。这些由uid整理。我如何才能将子对象的排序更改为字段排序,以便能够对其进行手动排序。(以后端形式可以进行排序,仅显示通过字段排序进行的排序是不可能的)

谢谢,卢卡斯

Seb*_*ger 7

在对象存储中对子元素进行排序的最简单方法是操纵TCA。

例:

$TCA['tx_myext_domain_model_ordering'] = array(
...
'columns' => array(
    'services' => array(
        'exclude' => 0,
        'label' => 'LLL:EXT:myext/Resources/Private/Language/locallang_db.xml:tx_myext_domain_model_ordering.services',
        'config' => array(
            'type' => 'inline',
            'foreign_table' => 'tx_myext_domain_model_service',
            'foreign_field' => 'ordering',
            'foreign_sortby' => 'sorting',
            'maxitems'      => 9999,
            'appearance' => array(
                'collapseAll' => 0,
                'levelLinksPosition' => 'top',
                'showSynchronizationLink' => 1,
                'showPossibleLocalizationRecords' => 1,
                'showAllLocalizationLink' => 1
            ),
        ),
    ),
),
...
);
Run Code Online (Sandbox Code Playgroud)

使用“ foreign_sortby” =>“ sorting”字段您可以轻松地说出应在哪个字段上订购孩子。


Urs*_*Urs 0

这是我在存储库类中执行此操作的方法:

class ItemRepository extends \TYPO3\CMS\Extbase\Persistence\Repository {

    /**
     * http://www.typo3.net/forum/thematik/zeige/thema/114160/?show=1
     * Returns items of this repository, sorted by sorting
     *
     * @return array An array of objects, empty if no objects found
     * @api
     */

    public function findAll() {
        $orderings = array(
            'sorting' => \TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_ASCENDING
        );

        $query = $this->createQuery();
        $query->setOrderings($orderings);

        $query->getQuerySettings()->setRespectSysLanguage(FALSE);
        $query->getQuerySettings()->setSysLanguageUid(0);

        $result = $query->execute();
        return $result;
    }

}
Run Code Online (Sandbox Code Playgroud)