TYPO3 - ExtBase 中不同操作的不同模型

问题描述 投票:0回答:1

我想为同一控制器和同一类型的对象中的不同操作解决不同的模型。

例如,在列表视图中我需要一些额外的拇指预览,在详细视图中我需要更多字段。在 JSON 视图中,我需要一些附加属性。

那么,我们可以根据每个操作组织模型,保留相同的数据表吗?

typo3 extbase
1个回答
0
投票

自从提出问题以来,TYPO3 中的许多事情都发生了变化,现在事情可能会有所不同。

在版本 11 或 12 中,可以通过

subclasses
相对简单地实现该方法。

这是文档的描述:

同一个数据库表可以使用不同的模型。

一个常见的用例是共享共同功能的相关领域对象,并且应该由分层模型类处理。

在这种情况下,模型的类型存储在表中的字段中,通常存储在名为 record_type 的字段中。然后将该字段注册为 TCA 数组的 ctrl 部分中的类型字段:

EXT:my_extension/Configuration/TCA/tx_myextension_domain_model_something.php
return [
    'ctrl' => [
        'title' => 'Something',
        'label' => 'title',
        'type' => 'record_type',
        // …
    ],
];

然后在 Configuration/Extbase/Persistence/Classes.php 文件中配置记录类型和首选模型之间的关系。

EXT:my_extension/Configuration/Extbase/Persistence/Classes.php
return [
    \MyVendor\MyExtension\Domain\Model\Something::class => [
        'tableName' => 'tx_myextension_domain_model_party',
        'recordType' => 'something',
        'subclasses' => [
            'oneSubClass' => \MyVendor\MyExtension\Domain\Model\SubClass1::class,
            'anotherSubClass' => MyVendor\MyExtension\Domain\Model\SubClass2::class,
        ],
    ],
];

然后就可以拥有一个通用存储库 SomethingRepository,它根据 record_type 字段的值返回 SubClass1 和 SubClass2 对象。这样,相关的领域对象可以在某些上下文中作为一个整体。

可以在扩展程序news中找到

示例

© www.soinside.com 2019 - 2024. All rights reserved.