ОБНОВЛЕНИЕ: я первоначально открыл этот вопрос, спрашивая о регистрации слота для приема сигналов FAL.Как я выяснил, слот фактически зарегистрирован, когда я помещаю код в ext_localconf.php или в ext_tables.php.Сигнал испускается, когда я загружаю файл в fileadmin / user_upload.Проблема в том, что я не могу получить уведомление, когда запись файла tca связана с файлом в той же папке с помощью кнопки Добавить файл в серверной части.
Ниже следует оригинальный вопрос:
Я пытаюсь зарегистрировать слот для приема сигналов FAL (например, SIGNAL_PostFileAdd и т. Д.) В бэкэнд-модуле, но безуспешно.Я создал следующий черновой класс слотов:
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 модуля содержит запись для записи файла, поскольку она генерируется Extension Builder:
'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
]
),
],
К сожалению, когда я добавляю файл в эту запись из серверной части, операция завершается успешно, нобез доказательств сигналов, полученных слотом.Конечно, я уже проверял, что метод слота может быть успешно выполнен в другом контексте (например, если я вызываю его в действии Контроллера).
Любая идея или предложение приветствуется.Заранее спасибо.