Как создать файловую связь в TYPO3 v9 в команде CLI от Symfony? - PullRequest
0 голосов
/ 26 февраля 2019

Я создал команду migrate для импорта данных из другого cms в TYPO3 с новыми командами Symfony в TYPO3 9.5.4.Единственная проблема - создать связь между моими импортированными данными и их изображениями.Пример из документации TYPO3 не работает для меня.

Я создаю свою новую сущность (например, Product) и вызываю мой метод addBackendFileRelation, чтобы создать файловую связь между загруженным файлом (запись существует в БД) и мой новый продукт (запись существует в БД).

public function addBackendFileRelation( int $uid, string $table, string $field, File $file ): bool {
    $resourceFactory = GeneralUtility::makeInstance( ResourceFactory::class );

    try {
        $fileObject = $resourceFactory->getFileObject( $file->getUid() );
        $objectUid = $fileObject->getUid();
    } catch ( FileDoesNotExistException $e ) {
        return false;
    }

    $record = BackendUtility::getRecord( $table, $uid );
    $newId = 'NEW1234';
    $data = [];
    $data['sys_file_reference'][$newId] = [
        'table_local' => 'sys_file',
        'uid_local' => $objectUid,
        'tablenames' => $table,
        'uid_foreign' => $uid,
        'fieldname' => $field,
        'pid' => $record['pid'],
    ];
    $data[$table][$uid] = [
        $field => $newId,
        'pid' => $record['pid'],
    ];
    $dataHandler = GeneralUtility::makeInstance( DataHandler::class );
    $dataHandler->start( $data, [] );
    $dataHandler->process_datamap();

    foreach ( $dataHandler->errorLog as $log ) {
        var_dump( $log );
    }

    $fileRefUid = $dataHandler->substNEWwithIDs[$newId];

    return (int)$fileRefUid > 0;
}

ErrorLog из DataHandler печатает это:
[1.2.1]: Attempt to modify table 'sys_file_reference' without permission.

Так чтоя могу сделать, чтобы создать отношения?Создание внутреннего пользователя для cli не работает для меня.

...