У меня есть расширения интерфейса, в которых пользователи должны добавлять/редактировать записи sys_file.TYPO3 Extbase FAL - Как обновить метаданные файлов (sys_file) от внешнего контроллера
Я пытаюсь обновить метаданные файла, как это (упрощенный):
$uid = (int)$this->request->getArgument('file');
$resourceFactory = \TYPO3\CMS\Core\Resource\ResourceFactory::getInstance();
$file = $resourceFactory->getFileObject($uid);
$file->updateProperties(array(
'title' => $this->request->getArgument('title'),
'keywords' => $this->request->getArgument('keywords'),
'description' => $this->request->getArgument('description'),
'copyright' => $this->request->getArgument('copyright'),
'modification_date' => time()
));
$this->fileRepository->update($file);
$this->addFlashMessage(LocalizationUtility::translate('messages.success.file'));
$this->persistenceManager->persistAll();
PersistenceManager и FileRepository впрыскивают через:
/**
* fileRepository
*
* @var \TYPO3\CMS\Core\Resource\FileRepository
* @inject
*/
protected $fileRepository = NULL;
/**
* @var \TYPO3\CMS\Extbase\Persistence\Generic\PersistenceManager
* @inject
*/
protected $persistenceManager;
и вообще я не получаю сообщение об ошибке, дисплей флэш-сообщение, форма жидкости даже показывает новые данные внутри формы, но фактически не сохраняется.
Любой способ отладки/решения этого вопроса? Кажется, что файл $ fileRepository фактически не выполняет инструкцию «update», есть ли какая-то проверка разрешения, которую мне нужно обойти в интерфейсе?
Эй Рене, спасибо за ваши вход. Я действительно сделал это так и надеялся использовать это только как временный хак. Я видел упоминание о FileIndexRepository, но не кажется, что этот объект может взять объект File Resource для обновления своих метаданных? – Garvin