当文件tca记录链接到TYPO3 BE中的文件时,如何获得通知?

时间:2018-12-10 17:15:21

标签: signals-slots extbase typo3-8.x

更新:我最初是打开这个问题的,询问要注册一个插槽以接收FAL信号。如我所知,当我将代码放在ext_localconf.php或ext_tables.php中时,插槽实际上已注册。当我将文件上传到fileadmin / user_upload时,发出信号。问题是,使用后端中的添加文件按钮将tca文件记录链接到同一文件夹中的文件时,我不会收到通知。

原始问题如下:

我正在尝试在后端模块中注册一个插槽以接收FAL信号(例如SIGNAL_PostFileAdd等),但没有成功。我创建了以下Slot类草案:

namespace DamiDim\Damianfaltest\Slot;

class ReceiveFileSignals
{

    /**
     * @param \TYPO3\CMS\Core\Resource\FileInterface $file
     * @param \TYPO3\CMS\Core\Resource\Folder $folder
     */
    public function fileAddSlot(\TYPO3\CMS\Core\Resource\FileInterface $file,
        \TYPO3\CMS\Core\Resource\Folder $folder)
    {
        $fname = '/home/damian/test/damiantest.txt';
        $data = "test\n";
        file_put_contents($fname, $data, FILE_APPEND);
    }
}

依次输入以下注册代码,首先在ext_tables.php中,没有任何工作迹象,然后在ext_localconf.php中:

    $signalSlotDispatcher = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Extbase\SignalSlot\Dispatcher::class);
    $signalSlotDispatcher->connect(\TYPO3\CMS\Core\Resource\ResourceStorage::class,
        \TYPO3\CMS\Core\Resource\ResourceStorageInterface::SIGNAL_PostFileAdd,
        \DamiDim\Damianfaltest\Slot\ReceiveFileSignals::class, 'fileAddSlot');

模块的TCA包含文件记录的条目,该条目是由扩展程序生成器生成的:

    'file' => [
        'exclude' => true,
        'label' => 'LLL:EXT:damianfaltest/Resources/Private/Language/locallang_db.xlf:tx_damianfaltest_domain_model_filetest.file',
        'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
            'file',
            [
                'appearance' => [
                    'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:media.addFileReference'
                ],
                'foreign_types' => [
                    '0' => [
                        'showitem' => '
                        --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
                        --palette--;;filePalette'
                    ],
                    \TYPO3\CMS\Core\Resource\File::FILETYPE_TEXT => [
                        'showitem' => '
                        --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
                        --palette--;;filePalette'
                    ],
                    \TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [
                        'showitem' => '
                        --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
                        --palette--;;filePalette'
                    ],
                    \TYPO3\CMS\Core\Resource\File::FILETYPE_AUDIO => [
                        'showitem' => '
                        --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
                        --palette--;;filePalette'
                    ],
                    \TYPO3\CMS\Core\Resource\File::FILETYPE_VIDEO => [
                        'showitem' => '
                        --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
                        --palette--;;filePalette'
                    ],
                    \TYPO3\CMS\Core\Resource\File::FILETYPE_APPLICATION => [
                        'showitem' => '
                        --palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
                        --palette--;;filePalette'
                    ]
                ],
                'maxitems' => 1
            ]
        ),
    ],

不幸的是,当我从后端向该记录添加文件时,操作成功,但没有任何迹象表明插槽接收到信号。当然,我已经测试过slot方法可以在另一个上下文中成功执行(例如,如果我在Controller的操作中调用它)。

欢迎任何想法或建议。预先感谢。

0 个答案:

没有答案