【发布时间】:2020-11-19 09:49:47
【问题描述】:
我创建了一个新扩展程序来向新闻扩展程序添加一些字段。
在后端一切正常,我可以向字段添加值,并且它们正确保存在数据库中。
当我清除缓存并重建 PHP 自动加载信息时,它会显示在前端,但几个小时后新字段会神奇地消失。
我已经使用扩展生成器创建了扩展并手动添加了该字段。
我多次阅读ProxyClass generator 信息,但看不到失败。
看来我需要在缓存或其他地方连接类。
我真的很绝望。
ext:albr_news_new_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_news_new_fields/ext_localconf.php
defined('TYPO3_MODE') or die();
$GLOBALS['TYPO3_CONF_VARS']['EXT']['news']['classes']['Domain/Model/News'][] = 'albr_news_new_fields';
\TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Extbase\Object\Container\Container::class)
->registerImplementation(\GeorgRinger\News\Domain\Model\News::class,
\Albr\AlbrNewsNewFields\Domain\Model\News::class);
ext:albr_news_new_fields/ext_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_news_new_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 和新闻 7.3.1
【问题讨论】:
-
嗨,我猜你调用方法 ExtensionManagementUtility::addToAllTCAtypes() 来添加你的新字段。这些新字段必须在文件 Configuration/TCA/Overrides/tx_news_domain_model_news.php 而不是 ext_tables.php 中。
-
非常感谢!我清理了 ext_tables.php 并将所有 TCA 定义移动到 Configuration/TCA/Overrides/tx_news_domain_model_news.php 与 ExtensionManagementUtility::addToAllTCAtypes() 现在它对我来说很有意义。但是现在我在后端和前端都看不到这些字段。试图卸载/安装/清除缓存/转储......仍然缺少一些东西
-
一团糟!经过一个小时检查它为什么不起作用后,问题是文件最后有一个空格。现在似乎一切看起来都正常了,看看几个小时后它是否还能正常工作。
标签: php typo3 typo3-9.x tx-news