私はsys_file_referenceテーブルを、通常のextbaseの方法だけで新しいテキストフィールド "copyright"で拡張しようとしています。魅力のように働いて、フィールドが現れます。しかし、sys_file_referenceリレーションを持つレコードを保存すると、参照が追加されません。保存後に空白になります...レコードが通常のメディアフィールドを持つページであるかどうか、またはカスタム拡張の1つであるかどうかは関係ありません。誰かが私が逃しているアイデアを得ましたか?TYPO3:新しいテキストフィールドでFAL sys_file_referenceを拡張する
ありがとうございました!
TCA:
$fileReferenceColumns = [
'copyright' => [
'exclude' => true,
'label' => $ll . 'sys_file_reference.copyright',
'config' => [
'type' => 'input',
'size' => 20,
'max' => 255,
'eval' => 'null',
'default' => null,
]
]];
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns('sys_file_reference', $fileReferenceColumns);
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addFieldsToPalette(
'sys_file_reference',
'imageoverlayPalette',
'copyright'
);
SQL:
CREATE TABLE sys_file_reference (
copyright VARCHAR(255) DEFAULT '' NOT NULL,
);
モデル:
class FileReference extends AbstractEntity
{
/**
* uid of a sys_file
*
* @var integer
*/
protected $originalFileIdentifier;
/**
* @var \TYPO3\CMS\Extbase\Domain\Model\File
*/
protected $file;
/**
* @var string
*/
protected $copyright;
/**
* setOriginalResource
*
* @param \TYPO3\CMS\Core\Resource\FileReference $originalResource
* @return void
*/
public function setOriginalResource(\TYPO3\CMS\Core\Resource\FileReference $originalResource)
{
$this->originalResource = $originalResource;
$this->originalFileIdentifier = (int)$originalResource->getOriginalFile()->getUid();
}
/**
* @return \TYPO3\CMS\Extbase\Domain\Model\File
*/
public function getFile()
{
return $this->file;
}
/**
* @param \TYPO3\CMS\Extbase\Domain\Model\File $file
*/
public function setFile($file)
{
$this->file = $file;
$this->originalFileIdentifier = $file->getUid();
}
/**
* @return string
*/
public function getCopyright()
{
return $this->copyright;
}
/**
* @param string $copyright
*/
public function setCopyright($copyright)
{
$this->copyright = $copyright;
}
}
のTypoScript:
config.tx_extbase {
persistence {
classes {
Interlutions\ItlGallery\Domain\Model\FileReference {
mapping {
tableName = sys_file_reference
columns {
uid_local.mapOnProperty = originalFileIdentifier
uid_local.mapOnProperty = file
votes.mapOnProperty = votes
}
}
}
}
objects {
TYPO3\CMS\Extbase\Domain\Model\FileReference.className = Interlutions\ItlGallery\Domain\Model\FileReference
}
}
}
感謝:
だから、例えば、以下の(sys_file_referenceのタイトルと説明のフィールド定義を見て)加工さにSQL定義を変更しますあなたのヒントのために残念ながら両方の助けてくれません。モデルがExtbase FileReferenceモデルに拡張され、TypoScriptオブジェクトのマッピングがplugin.tx_itlgalleryに変更されました。ページやカスタムモデルでも参照が失われます。 –ページのデフォルトのメディアフィールドを意味するか、ページに独自のフィールドを追加しましたか? –
デフォルトのメディアフィールドは、typoscriptマッピングが自分の拡張機能に制限されているため、変更の影響を受けてはいけません。 –