在 Extbase 中正确使用 FAL
Using FAL in Extbase correctly
领域模型
class Image extends AbstractContent {
/**
* @var \TYPO3\CMS\Extbase\Domain\Model\FileReference
*/
protected $file;
/**
* Gets the image file
*
* @return \TYPO3\CMS\Extbase\Domain\Model\FileReference
*/
public function getFile() {
return $this->file;
}
/**
* Sets the image file
*
* @param \TYPO3\CMS\Extbase\Domain\Model\FileReference $file
* @return void
*/
public function setFile($file) {
$this->file = $file;
}
}
导入服务片段
/**
* @var \TYPO3\CMS\Core\Resource\ResourceStorage
*/
protected $defaultStorage;
[...]
$this->defaultStorage = ResourceFactory::getInstance()->getDefaultStorage();
[...]
$file = $this->defaultStorage->addFile(
'/tmp/4711',
$this->defaultStorage->getRootLevelFolder(),
'foo.jpg',
'overrideExistingFile'
);
$falReference = ResourceFactory::getInstance()->createFileReferenceObject(
array(
'uid_local' => $file->getUid(),
'uid_foreign' => uniqid('NEW_'),
'uid' => uniqid('NEW_'),
)
);
$reference = GeneralUtility::makeInstance(FileReference::class);
$reference->setOriginalResource($falReference);
$content = GeneralUtility::makeInstance(Image::class);
$content->setFile($reference);
保存后 $content
图像可通过记录和文件挂载使用,但 BE > FILE > File List
中的 Ref
列是 -
而不是 >= 1
.所以它看起来像参考有些破烂。当我使用 BE 将图像添加到记录时,一切正常。我正在使用 TYPO3 CMS 7.3-dev.
我的代码有什么问题?
我在 Slack channel of TYPO3 中得到提示。
你只需要分别设置plugin.tx_myext.persistence.updateReferenceIndex = 1
module.tx_myext.persistence.updateReferenceIndex = 1
,索引就会更新
或者您可以使用 \TYPO3\CMS\Core\Database\ReferenceIndex::updateRefIndexTable()
。
当我不得不在我的扩展中使用 FAL 时,我发现了这个 link:
http://t3-developer.com/extbase-fluid/extensions-erweitern/fal-in-eigenen-extensions/fal-in-typo3-extensions-verwenden/
因为是德文,我会用最短的时间解释一下那里做了什么:
在 ext_tables.sql 中扩展您的数据模型
添加一些 char 类型的列(例如 varchar)
将您的列添加到 ext_tables.php
中 TCA 数组的列部分
'mypictures' => 数组(
'exclude' => 1,
'label' => 'My Pictures',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig('image', 数组(
'appearance' => 数组(
'createNewRelationLinkTitle' => 'LLL:EXT:cms/locallang_ttc.xlf:images.addFileReference'
),
'minitems' => 0,
'maxitems' => 99,
), $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext']),
),
扩展您的模型文件。注意注释!
您可以在流体模板中使用媒体
领域模型
class Image extends AbstractContent {
/**
* @var \TYPO3\CMS\Extbase\Domain\Model\FileReference
*/
protected $file;
/**
* Gets the image file
*
* @return \TYPO3\CMS\Extbase\Domain\Model\FileReference
*/
public function getFile() {
return $this->file;
}
/**
* Sets the image file
*
* @param \TYPO3\CMS\Extbase\Domain\Model\FileReference $file
* @return void
*/
public function setFile($file) {
$this->file = $file;
}
}
导入服务片段
/**
* @var \TYPO3\CMS\Core\Resource\ResourceStorage
*/
protected $defaultStorage;
[...]
$this->defaultStorage = ResourceFactory::getInstance()->getDefaultStorage();
[...]
$file = $this->defaultStorage->addFile(
'/tmp/4711',
$this->defaultStorage->getRootLevelFolder(),
'foo.jpg',
'overrideExistingFile'
);
$falReference = ResourceFactory::getInstance()->createFileReferenceObject(
array(
'uid_local' => $file->getUid(),
'uid_foreign' => uniqid('NEW_'),
'uid' => uniqid('NEW_'),
)
);
$reference = GeneralUtility::makeInstance(FileReference::class);
$reference->setOriginalResource($falReference);
$content = GeneralUtility::makeInstance(Image::class);
$content->setFile($reference);
保存后 $content
图像可通过记录和文件挂载使用,但 BE > FILE > File List
中的 Ref
列是 -
而不是 >= 1
.所以它看起来像参考有些破烂。当我使用 BE 将图像添加到记录时,一切正常。我正在使用 TYPO3 CMS 7.3-dev.
我的代码有什么问题?
我在 Slack channel of TYPO3 中得到提示。
你只需要分别设置plugin.tx_myext.persistence.updateReferenceIndex = 1
module.tx_myext.persistence.updateReferenceIndex = 1
,索引就会更新
或者您可以使用 \TYPO3\CMS\Core\Database\ReferenceIndex::updateRefIndexTable()
。
当我不得不在我的扩展中使用 FAL 时,我发现了这个 link: http://t3-developer.com/extbase-fluid/extensions-erweitern/fal-in-eigenen-extensions/fal-in-typo3-extensions-verwenden/
因为是德文,我会用最短的时间解释一下那里做了什么:
在 ext_tables.sql 中扩展您的数据模型 添加一些 char 类型的列(例如 varchar)
将您的列添加到 ext_tables.php
中 TCA 数组的列部分'mypictures' => 数组( 'exclude' => 1, 'label' => 'My Pictures', 'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig('image', 数组( 'appearance' => 数组( 'createNewRelationLinkTitle' => 'LLL:EXT:cms/locallang_ttc.xlf:images.addFileReference' ), 'minitems' => 0, 'maxitems' => 99, ), $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext']), ),
扩展您的模型文件。注意注释!
您可以在流体模板中使用媒体