正确使用Extbase中的FAL

时间:2015-05-23 15:02:39

标签: typo3 extbase fal

域名模型

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 个答案:

答案 0 :(得分:2)

我在Slack channel of TYPO3中得到了提示。

您只需要plugin.tx_myext.persistence.updateReferenceIndex = 1分别设置module.tx_myext.persistence.updateReferenceIndex = 1,索引就会更新。

或者您可以使用\TYPO3\CMS\Core\Database\ReferenceIndex::updateRefIndexTable()

答案 1 :(得分:-1)

当我必须在我的扩展程序中使用FAL时,我发现此链接: http://t3-developer.com/extbase-fluid/extensions-erweitern/fal-in-eigenen-extensions/fal-in-typo3-extensions-verwenden/

因为它是德语,我将在最短的时候解释在那里做了什么:

  1. 在ext_tables.sql中扩展您的数据模型 添加一些char类型的列(例如varchar)

  2. 将您的列添加到ext_tables.php

    中TCA数组的列部分

    'mypictures'=>阵列(             'exclude'=> 1,             'label'=> '我的照片',             'config'=> \ TYPO3 \ CMS \ Core \ Utility \ ExtensionManagementUtility :: getFileFieldTCAConfig('image',array(                     'appearance'=>阵列(                             'createNewRelationLinkTitle'=> 'LLL:EXT:CMS / locallang_ttc.xlf:images.addFileReference'                     )                     'minitems'=> 0,                     'maxitems'=> 99,             ),$ GLOBALS ['TYPO3_CONF_VARS'] ['GFX'] ['imagefile_ext']),     ),

  3. 扩展您的模板文件。注意注释!

  4. 您可以在流体模板中使用媒体