Typo3 10.4 - 如何将 FAL 图像添加到我的扩展
Typo3 10.4 - How to add FAL image to my extension
我是 Typo3 的新用户,我正在尝试使用 FAL 将图像添加到我的扩展中。
我在 Whosebug 上找到了一些旧文档和帖子来帮助我添加 FAL 来添加图像,我使用的是 10.4 版本。
我配置了我的 TCA、我的 locallang 和模型,但该字段没有出现在后端,使用的源很旧我不知道我是否遗漏了一些让它工作的东西
我把它添加到我的 Configuration/TCA 中:
'image' => [
'exclude' => true,
'label' => 'LLL:EXT:myextension/Resources/Private/Language/locallang_db.xlf:tx_myextension_domain_model_atelier.image',
'config' =>
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
'image',
[
'appearance' => [
'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference'
],
'foreign_types' => [
'0' => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette'
],
\TYPO3\CMS\Core\Resource\File::FILETYPE_TEXT => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette'
],
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette'
],
\TYPO3\CMS\Core\Resource\File::FILETYPE_AUDIO => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette'
],
\TYPO3\CMS\Core\Resource\File::FILETYPE_VIDEO => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette'
],
\TYPO3\CMS\Core\Resource\File::FILETYPE_APPLICATION => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette'
]
],
'foreign_match_fields' => [
'fieldname' => 'image',
'tablenames' => 'tx_myextension_domain_model_atelier',
'table_local' => 'sys_file',
],
'maxitems' => 3
],
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext']
),
],
Language/locallang.xlf :
<trans-unit id="tx_myextension_domain_model_atelier.image">
<source>image</source>
</trans-unit>
型号:
/**
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\FileReference>
*/
protected $image;
/**
* @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\FileReference> $image
*/
public function getImage()
{
return $this->image;
}
/**
* @param \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\FileReference> $image
* @return void
*/
public function setImage(\TYPO3\CMS\Extbase\Persistence\ObjectStorage $image)
{
$this->image = $image;
}
有人可以告诉我我是否遗漏了什么,或者我是否犯了错误吗?谢谢
我首先看到你遗漏的是每当你使用 ObjectStorage 时,你必须先初始化它。这意味着,在您的模型中,您必须执行以下操作:
/**
* Initializes all ObjectStorage properties when model is reconstructed from DB (where __construct is not called)
* Do not modify this method!
* It will be rewritten on each save in the extension builder
* You may modify the constructor of this class instead
*/
public function initializeObject()
{
$this->image = $this->image ?? new ObjectStorage();
}
要在后端显示它,您必须做的第二件事是将它添加到 types
。这些类型负责后端视图,您可以配置列、选项卡和调色板的显示顺序。
return [
'ctrl' => [...],
'types' => [
'0' => [
'showitem' => 'hidden, image, sys_language_uid, l10n_parent, l10n_diffsource'
],
],
'columns' => [...]
];
我是 Typo3 的新用户,我正在尝试使用 FAL 将图像添加到我的扩展中。
我在 Whosebug 上找到了一些旧文档和帖子来帮助我添加 FAL 来添加图像,我使用的是 10.4 版本。
我配置了我的 TCA、我的 locallang 和模型,但该字段没有出现在后端,使用的源很旧我不知道我是否遗漏了一些让它工作的东西
我把它添加到我的 Configuration/TCA 中:
'image' => [
'exclude' => true,
'label' => 'LLL:EXT:myextension/Resources/Private/Language/locallang_db.xlf:tx_myextension_domain_model_atelier.image',
'config' =>
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
'image',
[
'appearance' => [
'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference'
],
'foreign_types' => [
'0' => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette'
],
\TYPO3\CMS\Core\Resource\File::FILETYPE_TEXT => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette'
],
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette'
],
\TYPO3\CMS\Core\Resource\File::FILETYPE_AUDIO => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette'
],
\TYPO3\CMS\Core\Resource\File::FILETYPE_VIDEO => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette'
],
\TYPO3\CMS\Core\Resource\File::FILETYPE_APPLICATION => [
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette'
]
],
'foreign_match_fields' => [
'fieldname' => 'image',
'tablenames' => 'tx_myextension_domain_model_atelier',
'table_local' => 'sys_file',
],
'maxitems' => 3
],
$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext']
),
],
Language/locallang.xlf :
<trans-unit id="tx_myextension_domain_model_atelier.image">
<source>image</source>
</trans-unit>
型号:
/**
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\FileReference>
*/
protected $image;
/**
* @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\FileReference> $image
*/
public function getImage()
{
return $this->image;
}
/**
* @param \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\FileReference> $image
* @return void
*/
public function setImage(\TYPO3\CMS\Extbase\Persistence\ObjectStorage $image)
{
$this->image = $image;
}
有人可以告诉我我是否遗漏了什么,或者我是否犯了错误吗?谢谢
我首先看到你遗漏的是每当你使用 ObjectStorage 时,你必须先初始化它。这意味着,在您的模型中,您必须执行以下操作:
/**
* Initializes all ObjectStorage properties when model is reconstructed from DB (where __construct is not called)
* Do not modify this method!
* It will be rewritten on each save in the extension builder
* You may modify the constructor of this class instead
*/
public function initializeObject()
{
$this->image = $this->image ?? new ObjectStorage();
}
要在后端显示它,您必须做的第二件事是将它添加到 types
。这些类型负责后端视图,您可以配置列、选项卡和调色板的显示顺序。
return [
'ctrl' => [...],
'types' => [
'0' => [
'showitem' => 'hidden, image, sys_language_uid, l10n_parent, l10n_diffsource'
],
],
'columns' => [...]
];