簡體   English   中英

TYPO3 FileReference 不會將表名保存在 DB 上。 從 TYPO3 上的前端上傳文件

[英]TYPO3 FileReference does not save the tablename on the DB. Uploading file from frontend on TYPO3

在 TYPO3 10.4 上的自定義擴展中,我正在嘗試從前端上傳文件(圖像)。 文件上傳得很好,數據庫上的行似乎插入得很好,但是缺少一些數據。

這是我的表格:

    <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>

model:

     /**
     * 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;
    }

controller:

     /**
     * 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”,一旦我手動添加該數據,關系就會起作用(第一行,其中沒有丟失此數據,來自后端創建的行,工作正常)

在此處輸入圖像描述

我的問題是,為什么? 我該怎么做才能解決這個問題?

問題是 extbase 不知道這些值,因此您需要 state 那些在 TCA 中。 鑒於這個例子

'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部分是相關的,如果您不在前端處理文件上傳,則不需要。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM