Bonjour,

je dois réaliser un petit formulaire d'administration pour un module Drupal.

Je travaille sur un multisite Drupal institutionnel. Il y a un site principal et des sites satellites :
les sites satellites émettent des actualités et les rendent publiques via une API REST. Le module à coder est au niveau du site principal. Il récupère via l'API REST les actualités des sites satellites et les prépare pour les envoyer sous différentes formes sur la page d'accueil du site principal.

Le formulaire de configuration présente des lignes d'actualité : une ligne par actualité, titre et nom du site satellite. Et trois contrôles:

* une case à cocher détermine si l'actualité doit être affichée sur la page d'accueil (ou non);
* un bouton radio permet de choisir quelle activité doit être epinglée cette semaine;
* un second bouton radio permet d'épingler (ou distinguer) une actualité sur une plus longue période, dans une page dédiée

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
    #   NOM     SOURCE      ACCUEIL     SEMAINE     EPINGLE
    ========================================================
    1.  abc     Sa           X           .           .
    2.  def     Sb           .           .           .
    3.  ghi     Sc           X           .           O
    4.  jkl     Sa           .           O           .
Donc on a une liste générée depuis des appels REST et une entité de stockage (node-storage) sur le site principal.

Le problème est d'écrire le code du contrôleur qui traite ce formulaire.

La méthode configActus() qui peuple le formulaire et coche ou non les case est triviale.
Celle qui valide le formulaire (cupdateActus méthode POST réentrante qui redirige vers configActus) l'est un peu moins.

Le problème est l'espèce de DIFF qu'il faut pouvoir effectuer entrre la liste des actualités issues du service REST et les entrées de node-storage DB ou sont stockées les références aux actualités épinglées, tout en combinant le tout avec les informations provenant du POST

On a la table de vérité suivante, qui correspondant à un cycle de formulaire CRUD ré-entrant:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
    DB      POST        ACTION
    ======================================
    1       1           UPDATE
    0       1           CREATE
    1       0           DELETE
    0       0           aucune-action-POST
QUESTION:

* peut on traiter ce cas simplement sans utiliser de de session PHP / Symfony/Drupal ?
* dans la mesure où on est authentifié admin, peut on utiliser des champs de formulaires cachés ou les I%DS des actualités soient sérialisées ? est ce prudent ?
* si je me décide à utiliser la session Drupal, n'y a pas un risque d'encombrer la session quand on ne fait qu'invoquer ActuController::configActu si on ne valide pas le formulaire en le postant (simple consultation) donc pas de possibilité de vider la session ... ?


merci d'avance pour vos réponses inspirées !