1

ドメイン モデル

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した後、レコードとファイルマウントを介して利用できますが、 ) のRefBE > FILE > File List-ありません>= 1。そのため、参照がいくらか壊れているように見えます。BE を使用してレコードに画像を追加している場合は、問題ありません。TYPO3 CMS 7.3-dev を使用しています。

コードの何が問題になっていますか?

4

2 に答える 2

2

TYPO3 の Slack チャンネルでヒントを得ました。

plugin.tx_myext.persistence.updateReferenceIndex = 1それぞれ設定するだけmodule.tx_myext.persistence.updateReferenceIndex = 1でインデックスが更新されます。

または、 を使用することもできます\TYPO3\CMS\Core\Database\ReferenceIndex::updateRefIndexTable()

于 2015-05-23T18:50:50.990 に答える