Использование FAL в Extbase правильно
Доменная модель
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
изображение доступно через запись и количество файлов, но Ref
колонка в BE > FILE > File List
) является -
и не >= 1
, Таким образом, похоже, что ссылка немного сломана. Когда я использую BE для добавления изображения в запись, все нормально. Я использую TYPO3 CMS 7.3-dev.
Что не так с моим кодом?
2 ответа
I get the hint in the Slack channel of TYPO3.
Вам просто нужно установить plugin.tx_myext.persistence.updateReferenceIndex = 1
соответственно module.tx_myext.persistence.updateReferenceIndex = 1
and the index will be updated.
В качестве альтернативы вы можете использовать \TYPO3\CMS\Core\Database\ReferenceIndex::updateRefIndexTable()
,
Когда мне пришлось использовать FAL в моем расширении, я нашел эту ссылку: http://t3-developer.com/extbase-fluid/extensions-erweitern/fal-in-eigenen-extensions/fal-in-typo3-extensions-verwenden/
Так как это на немецком языке, я кратко объясню, что там делается:
расширить вашу модель данных в ext_tables.sql добавить столбец некоторого типа char (например, varchar)
добавьте свой столбец к разделу столбца в вашем массиве TCA в ext_tables.php
'mypictures' => array ('exclude' => 1, 'label' => 'My Pictures', 'config' => \ TYPO3 \ CMS \ Core \ Utility \ ExtensionManagementUtility:: getFileFieldTCAConfig ('image', array (' Внешний вид '=> массив ( 'createNewRelationLinkTitle' => 'LLL:EXT:cms/locallang_ttc.xlf:images.addFileReference'), 'minitems' => 0, 'maxitems' => 99,), $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext']),),
Расширьте свои модельные файлы. Обратите внимание на аннотации!
Вы можете использовать ваши медиа в вашем шаблоне жидкости