首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TYPO3 FileReference不会将表名保存在数据库中。在TYPO3上从前端上传文件

TYPO3 FileReference不会将表名保存在数据库中。在TYPO3上从前端上传文件
EN

Stack Overflow用户
提问于 2021-03-13 23:22:12
回答 1查看 111关注 0票数 0

在我的TYPO3 10.4自定义扩展中,我尝试从前端上传一个文件(图像)。文件上传得很好,数据库中的行似乎插入得很好,但是缺少一些数据。

这是我的表格:

代码语言:javascript
复制
    <f:form method="post" action="create" name="blackboard"
                              object="{blackboard}" enctype="multipart/form-data">
         <f:form.textfield placeholder="Titel*" required="true" property="title"></f:form.textfield>
         <f:form.upload property="image" name="image" />
         <f:form.submit class="btn btn-primary" value="{f:translate(key: 'submit', default: 'Absenden')}"></f:form.submit>
    </f:form>

模型:

代码语言:javascript
复制
     /**
     * image
     * 
     * @var \TYPO3\CMS\Extbase\Domain\Model\FileReference
     * @TYPO3\CMS\Extbase\Annotation\ORM\Cascade("remove")
     */
    protected $image = null;
     /**
     * Returns the image
     * 
     * @return \TYPO3\CMS\Extbase\Domain\Model\FileReference $image
     */
    public function getImage()
    {
        return $this->image;
    }

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

控制器:

代码语言:javascript
复制
     /**
     * action create 
     * @param Blackboard
     */
    public function createAction(Blackboard $blackboard)
    {
        $blackboard->setPid($GLOBALS['TYPO3_CONF_VARS']['EXTENSIONS']['hebo_blackboards']['BlackboardsStoragePId']);
        $blackboard->setUser($GLOBALS['TSFE']->fe_user->user['uid']);
        $this->blackboardRepository->add($blackboard);
    }

令人惊讶的是,就这么简单,这似乎工作得很好。我得到了上传到服务器上的图像,我自定义表上那个sys_file_reference的正确UID,sys_file_reference得到了那个sys_file的正确UID……但是正如你在下面的图片中看到的,有一些数据丢失了,"tablename“和"table_local”,一旦我手动添加了这些数据,关系就会工作(第一行,没有丢失这些数据的是从后端创建的行,工作正常)

我的问题是,为什么?我该怎么做来解决这个问题呢?

EN

回答 1

Stack Overflow用户

发布于 2021-03-19 03:24:50

问题是extbase不知道这些值,因此您需要在TCA中声明这些值。在这个例子中

代码语言:javascript
复制
'extra_files' => [
    'label' => 'A file',
    'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
        'extra_files',
        [
            'foreign_match_fields' => [
                'tablenames' => 'tx_yourtable_domain_model_fo',
                'table_local' => 'sys_file'
            ]
        ],
        $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext']
    ),
],

foreign_match_fields部分是相关的部分,如果您不在前端处理文件上传,则不需要该部分。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66615146

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档