1

我正在尝试升级 TYPO3 10.4 的扩展,它将自定义类型添加到 tx_news ( Doc )。

我根据这个例子进行了迁移:Breaking: #87623

类/控制器/NewsController.php

return [
  \Xyz\Extendnews\Domain\Model\Team::class => [
    'tableName' => 'tx_news_domain_model_news',
    'recordType' => 3,
],

但是我在 Fluid-Template 中调试的条目仍然使用默认模型。

我是否错过了什么或有人有一个有效的例子。

谢谢你的帮助。


更新: 我想创建一个新类型,在 Georg Ringer 的手册中解释

我创建了一个小扩展,TYPO3 9.5 一切正常,但 TYPO3 10.4 不行。 演示扩展

TYPO3 10.4 的原型不是 MxnTeam\Domain\Model\Team


2020 年 6 月 29 日更新:

来自 TYPO3 Slack 频道(帖子)的 tobenschmidt 帮助我。

return [
 \Mexan\MxnTeam\Domain\Model\Team::class => [
     'tableName' => 'tx_news_domain_model_news',
     'recordType' => \Mexan\MxnTeam\Domain\Model\Team::class,
 ],
 \Mexan\MxnTeam\Domain\Model\Client::class => [
     'tableName' => 'tx_news_domain_model_news',
     'recordType' => \Mexan\MxnTeam\Domain\Model\Client::class,
 ],
 \GeorgRinger\News\Domain\Model\News::class => [
     'tableName' => 'tx_news_domain_model_news',
     //'recordType' => 0,
     'subclasses' => [
         \Mexan\MxnTeam\Domain\Model\Team::class,
         \Mexan\MxnTeam\Domain\Model\Client::class,
     ]
 ],
];

即使使用 2 种自定义类型,这也可以正常工作。但不幸的是,不再加载默认新闻,但如果我添加recordType => 0,则只有普通新闻和我的自定义类型可见,而不是类型 1 和 2(内部和外部)

我更新了扩展: mxn_team

有没有办法防止这种情况?

4

2 回答 2

3

这对我有用...

按照https://docs.typo3.org/p/georgringer/news/8.5/en-us/DeveloperManual/ExtendNews/AddCustomType/Index.html中的描述实现您的新闻类型

但不是描述的 TypoScript,而是将以下文件添加到您的扩展程序中:

ext_name/Configuration/Extbase/Persistence/Classes.php

<?php

return [
    \GeorgRinger\News\Domain\Model\News::class => [
        'subclasses' => [
            3 => \Vendor\ExtName\Domain\Model\MyCustomNewsType::class
        ]
    ],
    Vendor\ExtName\Domain\Model\MyCustomNewsType::class => [
        'tableName' => 'tx_news_domain_model_news',
        'recordType' => 3,
    ],
];

TYPO3 v10 中删除了使用 TypoScript (config.tx_extbase.persistence.classes) 的方式

于 2020-11-08T16:10:14.823 回答
0

您编写“Classes/Controller/NewsController.php”但您必须在此处创建一个文件

extendnews/Configuration/Extbase/Persistence/Classes.php

并把你的代码放在那里。之后,不要忘记清除所有缓存。完整的文件“Classes.php”应该看起来像

<?php
declare(strict_types = 1);

return [
  \Xyz\Extendnews\Domain\Model\Team::class => [
    'tableName' => 'tx_news_domain_model_news',
    'recordType' => \Xyz\Extendnews\Domain\Model\Team::class,
],

要使用新模型,请遵循 Typ3.org 上的 Georg Ringer 手册

这里有一个工作示例

于 2020-06-22T19:56:00.043 回答