exports.md 1.7 KB

Fonctionnement des exports

Requête HTTP

Pour déclencher un export, on effectue une requete POST visant une ApiResource de type ExportRequest Toutes les ApiResource implémentant l'interface ExportRequestInterface sont traitées par le DataPersister App\DataPersister\Export\LicenceCmf\ExportRequestDataPersister.

ExportRequestDataPersister

Le ExportRequestDataPersister utilise un pattern iterable, c'est-à-dire qu'il balaie (via la classe ExporterHandler) tous les services implémentant ExporterInterface jusqu'à trouver un service qui supporte l'ExportRequest passée en paramètre.

Une fois le bon service d'export trouvé, il appelle la méthode export($exportRequest) de ce service.

Le service d'export

Les services d'export recoivent en paramètre une ExportRequest.

Ils vont ensuite effectuer les opérations suivantes:

  1. Construire un modèle : le service génère un objet ExportModel (qui peut être selon les cas objet ou une collection d'objets), qui contiendra toutes les données nécessaires au rendu du template.
  2. Générer le HTML : le service passe ensuite le modèle au template Twig associé, et récupère le résultat au format HTML.
  3. Encoder : l'encodeur adapté est trouvé via la classe EncoderHandler qui itère sur les encoders disponibles jusqu'à trouver le premier qui supporte le format demandé dans l'ExportRequest, puis appelle la méthode encode($html) de cet encoder, et enfin récupère le contenu final du fichier
  4. Création du fichier : le service LocalStorage est utilisé pour créer le fichier d'export dans un répertoire temporaire.
  5. Mise à jour de la DB : Un objet File est enfin enregistré en base.