TYPO3 extbase访问排序

时间:2014-11-26 15:06:37

标签: sorting typo3 extbase

使用流体调试数组时,我看到一个嵌套数组:

building
 [+]floor
    [+]room

单击+时,子阵列按UID排序,而不是按"排序"正如我在我的存储库中指定的那样。

protected $defaultOrderings = array(
    'sorting' => \TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_ASCENDING
);

我可以以某种方式访问​​排序值吗? 或者我可以以某种方式强制TYPO3在排序后对其自己的数组进行排序吗?

3 个答案:

答案 0 :(得分:0)

不应手动设置排序字段。

如果您想对条目进行排序,请使用DataHandler,例如Typo3 Backend。

这是一个解决方案: TYPO3 CommandController: How to set table field "sorting" of Extbase Object?

答案 1 :(得分:0)

通过“点击+”,您的意思是子对象没有按照您在TCA中指定的方式进行排序?

子对象上的排序丢失,因为默认情况下Extbases PersistenceRepository仅按对象本身中指定的顺序排序。但这没什么大不了的,您只需要通过subproperty指定订单,使用defaultOrderings属性或构建查询时:

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

    // Order by BE sorting
    protected $defaultOrderings = array(
        'sorting' => \TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_ASCENDING
        'room.sorting' => \TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_ASCENDING
    );

    ...

 }

这应该为您提供楼层的房间,按照楼层的分类排序,并在每个楼层,按排序分类的房间。

答案 2 :(得分:-1)

您可以通过在模型中将其定义为整数并创建相关的getter(如果需要,可以设置setter)来访问sort属性

受保护的$ sorting