Как я могу получить уведомление, когда запись файла tca связана с файлом в TYPO3 BE? - PullRequest
0 голосов
/ 10 декабря 2018

ОБНОВЛЕНИЕ: я первоначально открыл этот вопрос, спрашивая о регистрации слота для приема сигналов 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
            ]
        ),
    ],

К сожалению, когда я добавляю файл в эту запись из серверной части, операция завершается успешно, нобез доказательств сигналов, полученных слотом.Конечно, я уже проверял, что метод слота может быть успешно выполнен в другом контексте (например, если я вызываю его в действии Контроллера).

Любая идея или предложение приветствуется.Заранее спасибо.

...