Php 类型3:tx_新闻扩展中新字段的缓存问题
我创建了一个新的扩展以向新闻扩展添加一些字段。Php 类型3:tx_新闻扩展中新字段的缓存问题,php,typo3,typo3-9.x,tx-news,Php,Typo3,Typo3 9.x,Tx News,我创建了一个新的扩展以向新闻扩展添加一些字段。 在后端,一切正常,我可以向字段添加值,并将其正确保存在数据库中 当我清除缓存并重建PHP自动加载信息时,它会显示在前端,但几个小时后,新字段神奇地消失了 我已使用扩展生成器创建了扩展,并手动添加了字段。 我读了很多次信息,但看不到失败 看起来我需要在缓存或其他位置连接该类。 我真的很绝望 ext:albr\u news\u new\u fields/Classes/Domain/Model/news.php namespace Albr\AlbrN
在后端,一切正常,我可以向字段添加值,并将其正确保存在数据库中 当我清除缓存并重建PHP自动加载信息时,它会显示在前端,但几个小时后,新字段神奇地消失了 我已使用扩展生成器创建了扩展,并手动添加了字段。
我读了很多次信息,但看不到失败 看起来我需要在缓存或其他位置连接该类。
我真的很绝望 ext:albr\u news\u new\u fields/Classes/Domain/Model/news.php
namespace Albr\AlbrNewsNewFields\Domain\Model;
class News extends \GeorgRinger\News\Domain\Model\News {
/**
* titulo1
*
* @var string
*/
protected $titulo1 = '';
ext:albr\u news\u news\u fields/ext\u localconf.php
call_user_func(
function()
{
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile('albr_news_new_fields', 'Configuration/TypoScript', 'Nuevos campos tx_news');
}
);
$tempColumns = Array (
'titulo1' => [
'exclude' => true,
'label' => 'LLL:EXT:albr_news_new_fields/Resources/Private/Language/locallang_db.xlf:titulo1',
'description' => 'LLL:EXT:albr_news_new_fields/Resources/Private/Language/locallang_db.xlf:titulo1.description',
'config' => [
'type' => 'input',
'size' => 50,
'eval' => 'trim'
…
ext:albr\u news\u news\u fields/ext\u tables.php
call_user_func(
function()
{
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile('albr_news_new_fields', 'Configuration/TypoScript', 'Nuevos campos tx_news');
}
);
$tempColumns = Array (
'titulo1' => [
'exclude' => true,
'label' => 'LLL:EXT:albr_news_new_fields/Resources/Private/Language/locallang_db.xlf:titulo1',
'description' => 'LLL:EXT:albr_news_new_fields/Resources/Private/Language/locallang_db.xlf:titulo1.description',
'config' => [
'type' => 'input',
'size' => 50,
'eval' => 'trim'
…
ext:albr\u news\u new\u fields/Configuration/Typoscript/setup.Typoscript
plugin.tx_news {
persistence {
classes {
GeorgRinger\News\Domain\Model\News {
subclasses {
# three different classes are used for each news type
# 0 == default news
0 = Albr\AlbrNewsNewFields\Domain\Model\News
}
}
Albr\AlbrNewsNewFields\Domain\Model\NewsDefault {
mapping {
recordType = 0
tableName = tx_news_domain_model_news
}
}
Albr\AlbrNewsNewFields\Domain\Model\News {
mapping {
recordType = 0
tableName = tx_news_domain_model_news
}
}
}
}
}
config.tx_extbase {
persistence {
classes {
GeorgRinger\News\Domain\Model\News {
subclasses {
GeorgRinger\News\Domain\Model\News = Albr\AlbrNewsNewFields\Domain\Model\News
}
}
Albr\AlbrNewsNewFields\Domain\Model\News {
mapping {
tableName = tx_news_domain_model_news
}
}
}
}
}
我正在使用:TYPO3 9.5.22&News 7.3.1
ext\u tables.php
不应再用于TCA操作,请参阅
另请参见中提到的Configuration/TCA/Overrides/tx\u news\u domain\u model\u news.php
ext_tables.php
不应再用于TCA操作,请参阅
另请参见中提到的Configuration/TCA/Overrides/tx\u news\u domain\u model\u news.php
我想问题是因为您覆盖了tx\u新闻记录类型0 你最好有这样的东西:
plugin.tx_news {
persistence {
classes {
GeorgRinger\News\Domain\Model\News {
subclasses {
3 = Albr\AlbrNewsNewFields\Domain\Model\News
}
}
Albr\AlbrNewsNewFields\Domain\Model\News {
mapping {
recordType = 3
tableName = tx_news_domain_model_news
}
}
}
}
}
然后,在Configuration/TCA/Overrides/tx\u news\u domain\u model\u news.php中定义了一种新类型的记录,其中包含您的新字段:
$GLOBALS['TCA']['tx_news_domain_model_news']['types']['3'] = [
'showitem' => '
--palette--;;paletteCore,title,titulo1,--palette--;;paletteSlug,teaser,
--palette--;;paletteDate,
bodytext,
--div--;' . $ll . 'tx_news_domain_model_news.content_elements,
content_elements,
--div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.media,
fal_media,fal_related_files,
--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:categories,
categories,
--div--;' . $ll . 'tx_news_domain_model_news.tabs.relations,
related,related_from,
related_links,tags,
--div--;LLL:EXT:frontend/Resources/Private/Language/locallang_tca.xlf:pages.tabs.metadata,
--palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_tca.xlf:pages.palettes.editorial;paletteAuthor,
--palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_tca.xlf:pages.palettes.metatags;metatags,
--palette--;' . $ll . 'tx_news_domain_model_news.palettes.alternativeTitles;alternativeTitles,
--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language,
--palette--;;paletteLanguage,
--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access,
--palette--;;paletteHidden,
--palette--;;paletteAccess,
--div--;' . $ll . 'notes,
notes,
--div--;LLL:EXT:frontend/Resources/Private/Language/locallang_tca.xlf:pages.tabs.extended,'
];
查看news/Configuration/TCA/tx_news\u domain\u model_news.php我想问题是因为您覆盖了tx_新闻记录类型0 你最好有这样的东西:
plugin.tx_news {
persistence {
classes {
GeorgRinger\News\Domain\Model\News {
subclasses {
3 = Albr\AlbrNewsNewFields\Domain\Model\News
}
}
Albr\AlbrNewsNewFields\Domain\Model\News {
mapping {
recordType = 3
tableName = tx_news_domain_model_news
}
}
}
}
}
然后,在Configuration/TCA/Overrides/tx\u news\u domain\u model\u news.php中定义了一种新类型的记录,其中包含您的新字段:
$GLOBALS['TCA']['tx_news_domain_model_news']['types']['3'] = [
'showitem' => '
--palette--;;paletteCore,title,titulo1,--palette--;;paletteSlug,teaser,
--palette--;;paletteDate,
bodytext,
--div--;' . $ll . 'tx_news_domain_model_news.content_elements,
content_elements,
--div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.media,
fal_media,fal_related_files,
--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:categories,
categories,
--div--;' . $ll . 'tx_news_domain_model_news.tabs.relations,
related,related_from,
related_links,tags,
--div--;LLL:EXT:frontend/Resources/Private/Language/locallang_tca.xlf:pages.tabs.metadata,
--palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_tca.xlf:pages.palettes.editorial;paletteAuthor,
--palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_tca.xlf:pages.palettes.metatags;metatags,
--palette--;' . $ll . 'tx_news_domain_model_news.palettes.alternativeTitles;alternativeTitles,
--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language,
--palette--;;paletteLanguage,
--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access,
--palette--;;paletteHidden,
--palette--;;paletteAccess,
--div--;' . $ll . 'notes,
notes,
--div--;LLL:EXT:frontend/Resources/Private/Language/locallang_tca.xlf:pages.tabs.extended,'
];
请查看news/Configuration/TCA/tx_news\u domain\u model_news.php如果您想保持记录类型为0,我建议您这样做:
plugin.tx_news {
persistence {
classes {
Albr\AlbrNewsNewFields\Domain\Model\News {
mapping {
recordType = 0
tableName = tx_news_domain_model_news
}
}
}
}
}
在Configuration/TCA/Overrides/tx_news_domain_model_news.php中,Overrides type=0:
$GLOBALS['TCA']['tx_news_domain_model_news']['types']['0'] = array_replace_recursive(
$GLOBALS['TCA']['tt_content']['types']['0'],
[
'showitem' => '
--palette--;;paletteCore,title,titulo1,--palette--;;paletteSlug,teaser,
--palette--;;paletteDate,
bodytext,
--div--;' . $ll . 'tx_news_domain_model_news.content_elements,
content_elements,
--div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.media,
fal_media,fal_related_files,
--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:categories,
categories,
--div--;' . $ll . 'tx_news_domain_model_news.tabs.relations,
related,related_from,
related_links,tags,
--div--;LLL:EXT:frontend/Resources/Private/Language/locallang_tca.xlf:pages.tabs.metadata,
--palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_tca.xlf:pages.palettes.editorial;paletteAuthor,
--palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_tca.xlf:pages.palettes.metatags;metatags,
--palette--;' . $ll . 'tx_news_domain_model_news.palettes.alternativeTitles;alternativeTitles,
--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language,
--palette--;;paletteLanguage,
--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access,
--palette--;;paletteHidden,
--palette--;;paletteAccess,
--div--;' . $ll . 'notes,
notes,
--div--;LLL:EXT:frontend/Resources/Private/Language/locallang_tca.xlf:pages.tabs.extended,'
]
);
在ext_emconf.php中设置tt_新闻依赖项:
$EM_CONF[$_EXTKEY] = [
...
'constraints' => [
'depends' => [
'typo3' => '9.5.0-9.5.99',
'tt_news' => '7.3.1-7.3.99',
],
'conflicts' => [],
'suggests' => [],
],
];
如果要保持记录类型为0,则建议您执行以下操作:
plugin.tx_news {
persistence {
classes {
Albr\AlbrNewsNewFields\Domain\Model\News {
mapping {
recordType = 0
tableName = tx_news_domain_model_news
}
}
}
}
}
在Configuration/TCA/Overrides/tx_news_domain_model_news.php中,Overrides type=0:
$GLOBALS['TCA']['tx_news_domain_model_news']['types']['0'] = array_replace_recursive(
$GLOBALS['TCA']['tt_content']['types']['0'],
[
'showitem' => '
--palette--;;paletteCore,title,titulo1,--palette--;;paletteSlug,teaser,
--palette--;;paletteDate,
bodytext,
--div--;' . $ll . 'tx_news_domain_model_news.content_elements,
content_elements,
--div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.media,
fal_media,fal_related_files,
--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:categories,
categories,
--div--;' . $ll . 'tx_news_domain_model_news.tabs.relations,
related,related_from,
related_links,tags,
--div--;LLL:EXT:frontend/Resources/Private/Language/locallang_tca.xlf:pages.tabs.metadata,
--palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_tca.xlf:pages.palettes.editorial;paletteAuthor,
--palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_tca.xlf:pages.palettes.metatags;metatags,
--palette--;' . $ll . 'tx_news_domain_model_news.palettes.alternativeTitles;alternativeTitles,
--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language,
--palette--;;paletteLanguage,
--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access,
--palette--;;paletteHidden,
--palette--;;paletteAccess,
--div--;' . $ll . 'notes,
notes,
--div--;LLL:EXT:frontend/Resources/Private/Language/locallang_tca.xlf:pages.tabs.extended,'
]
);
在ext_emconf.php中设置tt_新闻依赖项:
$EM_CONF[$_EXTKEY] = [
...
'constraints' => [
'depends' => [
'typo3' => '9.5.0-9.5.99',
'tt_news' => '7.3.1-7.3.99',
],
'conflicts' => [],
'suggests' => [],
],
];
您好,我想您可以调用ExtensionManagementUtility::addToAllTCAtypes()方法来添加新字段。这些新字段必须位于文件配置/TCA/Overrides/tx\u news\u domain\u model\u news.php中,而不是ext\u tables.php中。非常感谢!我清理了ext_tables.php,并使用ExtensionManagementUtility::addToAllTCAtypes()将所有TCA定义移动到Configuration/TCA/Overrides/tx_news\u domain\u model\u news.php,现在它对我很有意义。但是现在我在后端和前端都看不到字段。试图卸载/安装/清除缓存/转储。。。还缺什么东西真是一团糟!在检查了一个小时为什么不起作用后,问题是文件的末尾有一个空格。现在看起来一切都正常了,看看几个小时后它是否还能工作。您好,我想您可以调用方法ExtensionManagementUtility::addToAllTCAtypes()来添加新字段。这些新字段必须位于文件配置/TCA/Overrides/tx\u news\u domain\u model\u news.php中,而不是ext\u tables.php中。非常感谢!我清理了ext_tables.php,并使用ExtensionManagementUtility::addToAllTCAtypes()将所有TCA定义移动到Configuration/TCA/Overrides/tx_news\u domain\u model\u news.php,现在它对我很有意义。但是现在我在后端和前端都看不到字段。试图卸载/安装/清除缓存/转储。。。还缺什么东西真是一团糟!在检查了一个小时为什么不起作用后,问题是文件的末尾有一个空格。现在看来,一切看起来都正常工作了,看看在几个小时后它是否还能工作。非常感谢,这可能是答案,需要等待几个小时才能看到缓存发生了什么。将在这里发布。我理解这是为了创造一种新的新闻类型,而不是触及原始内容。但是如果我更喜欢用0类型来覆盖它,那是值得的,对吗?是的,这是用你的新字段创建另一种类型的新闻。我改了帖子,给你看确切的密码。您不必等待,只需清除系统缓存即可。我写另一个答案来告诉你如何保持记录type=0非常感谢你,弗洛里安!我试图让新字段首先在前端和后端工作,然后我将创建新类型,这对我来说似乎是一个很好的解决方案。非常感谢。非常感谢,这可能是答案,需要等待几个小时才能看到缓存发生了什么。将在这里发布。我理解这是为了创造一种新的新闻类型,而不是触及原始内容。但是如果我更喜欢用0类型来覆盖它,那是值得的,对吗?是的,这是用你的新字段创建另一种类型的新闻。我改了帖子,给你看确切的密码。您不必等待,只需清除系统缓存即可。我写另一个答案来告诉你如何保持记录type=0非常感谢你,弗洛里安!我试图让新字段首先在前端和后端工作,然后我将创建新类型,这对我来说似乎是一个很好的解决方案。非常感谢。哦,我在页面上读到了:ext_tables.php不是缓存的。配置/TCA中的文件被缓存。这就是问题所在。改变了,看起来很有希望,让我们等几个小时看看缓存会发生什么。非常感谢您向我指出这个方向。请记住,在v10中,Extbase持久性配置在打字本中已经不可能了。这是正确的答案,写在'configuration/TCA/Overrides/tx\u news\u domain\m'中