Cela semble assez simple, mais je semble être trop stupide pour le faire. J'ai ajouté un champ à fe_users appelé "cv" pour télécharger un fichier pdf. Dans mon modèle FrontendUser il ressemble à ceci:TYPO3 8 avec extbase: supprimer FileReference
/**
* @var \TYPO3\CMS\Extbase\Domain\Model\FileReference
* @cascade remove
*/
protected $cv;
Envoi d'un fichier fonctionne comme un charme, j'ai utilisé le script à partir https://github.com/helhum/upload_example dans certaines régions.
Le seul problème est la suppression d'un tel fichier, ou plutôt, la suppression de la connexion entre sys_file et l'utilisateur. Après avoir soumis un formulaire et cocher une case à cocher, j'ai essayé de le faire:
$user->setCv(null);
$user->setEdited(new \DateTime());
$this->frontendUserRepository->update($user);
$persistenceManager->persistAll();
Après un rechargement de la page si je regarde le back-end, le fichier cv est toujours attaché à l'utilisateur (mais « modifié » était correctement défini sur le datetime actuel). Je ne comprends pas cela, comment puis-je définir la valeur FileReference à null?
Si je les stocker dans une m: n relation, est-il encore possible de créer un formulaire avec la propriété? si c'est le cas, comment? – Chi
Ils sont stockés dans une relation m: n, vous n'avez aucun changement à utiliser un 1: 1 puisque cela est défini dans le 'TCA' pour la table' sys_file_reference'. Si vous voulez ajouter un fichier à 'ObjectStorage', vous pouvez utiliser' ObjectStorage-> attacher ($ file) '. Si vous ne voulez pas de relation m: n, vous pouvez utiliser 'TYPO3 \ CMS \ Core \ Resource \ File' à la place. –
Pourquoi utiliserait-il un ObejctStorage si CV est un simple fichier par utilisateur? – j4k3