页面对象未与类别一起返回

Page object isn't returned with the categories

我正在开发一个插件来列出特定类型的所有页面。我毫无困难地添加了新类型。我也想显示页面的类别,但是当我调试模板中的对象时,我只看到与页面关联的类别数。

存储库没有 return 页面类别,我找不到原因。此外,作为测试,我检查了普通页面是否会 return 子页面,但它甚至不计算归因于该页面的类别数。

我查看了 sys_category_record_mm table 并且行创建正确。我还没有触及 TCA 中的类别。

这是 sys_category TCA

中的 items 配置
items
    config
        allowed = *
        internal_type = db
        MM = sys_category_record_mm
        MM_oppositeUsage
        pages
            0 = categories
        sys_file_metadata
        tt_content
        tx_news_domain_model_news
            0 = categories
        show_thumbs =
        size = 10
        type = group
    exclude = 0
    label = LLL:EXT:lang/locallang_tca.xlf:sys_category.items

这是我在 TCA

中的页面 类别 配置
categories
    config
        autoSizeMax = 50
        foreign_table = sys_category
        foreign_table_where = AND sys_category.sys_language_uid IN (-1, 0) ORDER BY sys_category.sorting ASC
        maxitems = 9999
        MM = sys_category_record_mm
        MM_match_fields
            fieldname = categories
            tablenames = pages
        MM_opposite_field = items
        renderType = selectTree
        size = 10
        treeConfig
            appearance
                expandAll = 1
                maxLevels = 99
                showHeader = 1
            parentField = parent
        type = select
    exclude = 1
    label = LLL:EXT:lang/locallang_tca.xlf:sys_category.categories

我没有向页面添加更多类别选择器。手动或通过 makeCategorizable 这样应该仍然是默认配置。

您在谈论 objects 时是否正在使用 extbase?如果是,那么 categories 属性 在您的模型中得到了错误的类型。使用

而不是字符串
/**
 * @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\Category>
 * @lazy
 */
protected $categories;

如果您不使用 extbase,只需对 sys_category_record_mm 执行额外查询以获取相应的计数。