【问题标题】:TYPO3 8 with extbase: remove FileReference带有 extbase 的 TYPO3 8:删除 FileReference
【发布时间】:2017-09-11 03:33:18
【问题描述】:

这似乎很简单,但我似乎太愚蠢了,无法做到。我在 fe_users 中添加了一个名为“cv”的字段,用于上传 pdf 文件。在我的 FrontendUser 模型中,它看起来像这样:

/**
 * @var \TYPO3\CMS\Extbase\Domain\Model\FileReference
 * @cascade remove
 */
protected $cv;

上传文件就像一个魅力,我部分使用了来自https://github.com/helhum/upload_example 的脚本。

唯一的问题是删除这样的文件,或者更确切地说,删除 sys_file 和用户之间的连接。提交表单并选中复选框后,我尝试这样做:

$user->setCv(null);
$user->setEdited(new \DateTime());
$this->frontendUserRepository->update($user);
$persistenceManager->persistAll();

如果我查看后端页面重新加载后,cv 文件仍附加到用户(但“已编辑”已正确设置为当前日期时间)。我不明白这一点,如何将 FileReference 值设置为 null?

【问题讨论】:

    标签: typo3 extbase


    【解决方案1】:

    请务必检查您的型号。 FileReferences 存储在 M:N 关系中。所以你必须在你的模型中使用以下声明:

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

    __constructor 中进行初始化:

    public function __construct()
    {
      $this->cv = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage();
    }
    

    现在您的FileReference 位于ObjectStorage 中。要清除所有FileReferences,您可以将cv 设置为new \TYPO3\CMS\Extbase\Persistence\ObjectStorage()

    $user->removeCv(new \TYPO3\CMS\Extbase\Persistence\ObjectStorage()); 
    $user->setEdited(new \DateTime()); 
    $this->frontendUserRepository->update($user); 
    $persistenceManager->persistAll();
    

    【讨论】:

    • 如果我将它们存储在 m:n 关系中,是否仍然可以使用该属性创建表单?如果是这样 - 如何?
    • 它们存储在 m:n 关系中,您无需更改使用 1:1,因为这是在 sys_file_reference 表的 TCA 中定义的。如果您想将文件添加到ObjectStorage,您可以使用ObjectStorage-&gt;attach($file)。如果您不想要 m:n 关系,您可以改用 TYPO3\CMS\Core\Resource\File
    • 如果 CV 只是每个用户的一个文件,他为什么要使用 ObejctStorage?
    • 他使用FileReference 分配文件。 FileReference 具有 m:n 关系的表定义。所以 TYPO3 认为可以有多个文件,而 Extbase 想要一个数组来分配FileReference。正如我写的:如果他只想要一张图片,他可以使用File 而不是FileReference
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多