【问题标题】:TYPO3 extbase access sortingTYPO3 extbase 访问排序
【发布时间】:2014-11-26 15:06:36
【问题描述】:

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

building
 [+]floor
    [+]room

单击 + 时,子数组按 UID 排序,而不是按我在存储库中指定的“排序”排序。

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

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

【问题讨论】:

  • 可以在 BE 中手动排序吗?
  • 如果您需要帮助,您需要提供更多信息。我猜 building->floor->room 不是嵌套数组,而是一些与关系相关的模型。什么样的关系? 1:n,m:n?什么是可能的取决于关系的类型。
  • 确实,我们需要更多信息。这可能在您的TCA 中配置错误。

标签: sorting typo3 extbase


【解决方案1】:

排序字段不应手动设置。

如果你想对条目进行排序,请像 Typo3 后端一样使用 DataHandler。

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

【讨论】:

    【解决方案2】:

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

    由于默认情况下 Extbases PersistenceRepository 仅按对象本身中指定的顺序排序,因此子对象上的排序会丢失。但这没什么大不了的,您只需使用 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
        );
    
        ...
    
     }
    

    这应该为您提供楼层的房间,按楼层的排序排序,并且在每个楼层中,房间按其排序排序。

    【讨论】:

      【解决方案3】:

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

      受保护的$排序

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-06-17
        • 1970-01-01
        • 2014-11-06
        • 1970-01-01
        • 1970-01-01
        • 2012-05-28
        • 1970-01-01
        • 2014-08-29
        相关资源
        最近更新 更多