更新:我最初是打开这个问题的,询问要注册一个插槽以接收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的操作中调用它)。
欢迎任何想法或建议。预先感谢。