【问题标题】:How to implement multiple file upload in TYPO3 Front End Extension如何在 TYPO3 前端扩展中实现多文件上传
【发布时间】:2015-06-30 10:38:05
【问题描述】:

我的要求是在 TYPO3 前端扩展中实现一个多文件上传字段。这是我用于单个文件上传的内容。

模型中的我的字段

/**
 * angebotuploaden
 *
 * @var \TYPO3\CMS\Extbase\Domain\Model\FileReference
 */
protected $angebotuploaden = NULL;

 /**
 * Returns the angebotuploaden
 *
 * @return \TYPO3\CMS\Extbase\Domain\Model\FileReference $angebotuploaden
 */
 public function getAngebotuploaden() {
 return $this->angebotuploaden;
}

/**
 * Sets the angebotuploaden
 *
 * @param \TYPO3\CMS\Extbase\Domain\Model\FileReference $angebotuploaden
 * @return void
 */
public function setAngebotuploaden(\TYPO3\CMS\Extbase\Domain\Model\FileReference $angebotuploaden) {
    $this->angebotuploaden = $angebotuploaden;
}

现在我在为此字段实现多个文件上传时遇到问题。请帮我解决一下。

【问题讨论】:

  • 我建议对多个文件使用 1:n 的嵌套模型。然后在您当前的模型中为此使用 ObjectStorage。
  • @JayDinse : 你能给我看一个例子来在模态的 getter 和 setter 中实现它吗?

标签: typo3 extbase


【解决方案1】:

使用 ObjectStorage 获得与 FileReference 模型的 1:n 关系。在您的模型中可能如下所示:

/**
 * uploadFiles
 *
 * @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\FileReference>
 * @cascade remove
 */
protected $uploadFiles = NULL;

/**
 * __construct
 */
public function __construct() {
    //Do not remove the next line: It would break the functionality
    $this->initStorageObjects();
}

/**
 * Initializes all ObjectStorage properties
 * Do not modify this method!
 * It will be rewritten on each save in the extension builder
 * You may modify the constructor of this class instead
 *
 * @return void
 */
protected function initStorageObjects() {
    $this->uploadFiles = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage();
}



/**
 * Adds a UploadFile
 *
 * @param \TYPO3\CMS\Extbase\Domain\Model\FileReference $uploadFile
 * @return void
 */
public function addUploadFile(\TYPO3\CMS\Extbase\Domain\Model\FileReference $uploadFile) {
    $this->uploadFiles->attach($uploadFile);
}

/**
 * Removes a UploadFile
 *
 * @param \TYPO3\CMS\Extbase\Domain\Model\FileReference $uploadFileToRemove The UploadFile to be removed
 * @return void
 */
public function removeUploadFile(\TYPO3\CMS\Extbase\Domain\Model\FileReference $uploadFileToRemove) {
    $this->uploadFiles->detach($uploadFileToRemove);
}

/**
 * Returns the uploadFiles
 *
 * @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\FileReference> $uploadFiles
 */
public function getUploadFiles() {
    return $this->uploadFiles;
}

/**
 * Sets the uploadFiles
 *
 * @param \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\FileReference> $uploadFiles
 * @return void
 */
public function setUploadFiles(\TYPO3\CMS\Extbase\Persistence\ObjectStorage $uploadFiles) {
    $this->uploadFiles = $uploadFiles;
}   

还有很多事情要做,尤其是在 TCA 中,但我不知道它们的详细信息,因为我还没有使用过。有关更多详细信息,请参阅 Hemult Hummels Upload Example 和 this question。

【讨论】:

  • @Hoja.M.A 如果你让它工作,请随时完成这个答案。
  • 你太棒了。感谢您的回答。你节省了我的时间。 (y)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-31
  • 1970-01-01
相关资源
最近更新 更多