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
Donc on a une liste générée depuis des appels REST et une entité de stockage (node-storage) sur le site principal.
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 .
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:
QUESTION:
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
* 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 !
Partager