Persistance · Question 6 sur 12
Quel type utilise-t-on dans un modèle Extbase pour une propriété qui contient plusieurs objets liés, p. ex. tous les intervenants d'une conférence ?
1 réponse est correcte. Facile
Afficher la solution
Solution
- A \
TYPO3\ CMS\ Extbase\ Persistence\ ObjectStorage
Explication
Pour les relations 1:n et m:n, Extbase utilise la classe ObjectStorage, p. ex. protected ObjectStorage $speakers; avec l'annotation @var ObjectStorage<Speaker> pour l'IDE et l'analyse statique. Les entrées sont ajoutées via des méthodes comme addSpeaker(), qui appellent attach() en interne, et retirées avec detach(). Dans le template, on parcourt la relation avec <f:for each="{conference.speakers}" as="speaker">. L'ObjectStorage doit être initialisé avant d'y accéder, sinon une erreur se produit. Le SplObjectStorage de PHP semble similaire, mais Extbase ne peut ni y charger des relations ni en persister les modifications.