我有一个旧的typo3网站,它使用带有以下代码的图像选择器:
'tx_my_image' => array(
'label' => 'Image',
'exclude' => 1,
'config' => array(
'type' => 'group',
'internal_type' => 'file_reference',
'allowed' => 'gif,jpg,jpeg,png',
'show_thumbs' => 1,
'size' => 1,
'maxitems' => 1,
'minitems' => 0,
)
),
这在typo3 10中不再起作用(错误:“表页中字段tx_my_image的TCA内部类型必须设置为“db”或“文件夹”。”)。所以我把它改成这样:
'tx_my_image' => array(
'label' => 'Image',
'exclude' => 1,
'config' => ExtensionManagementUtility::getFileFieldTCAConfig('tx_my_image', [
'show_thumbs' => 1,
'size' => 1,
'maxitems' => 1,
'minitems' => 0
], 'gif,jpg,jpeg,png'),
),
从某种意义上说,后端不再抛出致命错误,但我现在的问题是不再找到所有以前选择的图像。之前,图像的路径只是存储在页面表中的“tx_my_image”字段中(这可能不是一个好主意,但当我开始维护站点时已经是这样了)。
该网站的页面数量巨大,因此手动重做所有图像选择是完全不可行的。所以我的问题是,有没有办法将我的旧数据转换为新的typo3版本期望的任何格式,或者更好的是,有一种方法来配置表单,以便它找到当前形式的数据?
“新的typo3版本需要什么格式”是一种文件抽象层关系,在8年前的“新版本”TYPO3 6.2中引入(于2014年3月25日发布);)
所以,FAL 的基础知识例如: 升级到FAL可以在文档中阅读。
有多种解决方案,但大多数都需要针对您的自定义扩展进行调整/配置:
1。扩展“connet://FAL 迁移”
此扩展(适用于 TYPO3 6.2)可以帮助迁移到 FAL。 https://extensions.typo3.org/extension/conn_falmigration
2。看看EXT:新闻
Georg 已将以前的迁移代码(用于 hist EXT:news)提取到一个额外的扩展中。查看代码可以显示必须完成哪些步骤。 https://packagist.org/packages/georgringer/news-fal-migration
3.大部分都是手动的
只需一点 PHP 脚本就可以处理:
输入数据是记录的 uid 和文件的路径。该路径必须采用现在用作新表
identifier
中的 sys_file
列的形式。
<?php
// each line: recordUid;pathOfFile
$csv = "1;/user_upload/test.pdf
2;/user_upload/image.jpg";
$lines = str_getcsv($csv, chr(10));
$pid = 123;
foreach ($lines as $line) {
$row = str_getcsv($line, ';');
$row = array_map('trim', $row);
$uid = $row[0];
$filePath = $row[1];
if ($filePath && $filePath !== '""') {
$uid = trim($uid);
echo "INSERT INTO sys_file_reference (pid, uid_local, uid_foreign, tablenames, fieldname, table_local) VALUES($pid, (SELECT uid FROM sys_file WHERE identifier=\"" . $filePath . "\"), $uid, 'yourTable ', 'tx_my_image', 'sys_file');" . chr(10);
}
}
这将生成 SQL 查询以插入所需的 FAL 关系。