Créer et associer de nouveaux objets avec ingéniosité : actions ou traiter de CVT ?

Bonjour,

Je suis en train d’appréhender le workflow autour des fichiers d’action pour créer/éditer de nouveaux objets.
Je m’inspire de action_editer_rubrique_dist pour appréhender la logique.

Je cherche par exemple à créer une « source » (mon objet de travail) et l’associer à un autre objet (via une table de liaison).

J’ai créé des boutons d’actions de ce type depuis les pages d’édition de rubriques : source_edit, « creation-rubrique-113 ».

Dans mon fichier action/editer_source.php, extrait :


	$parametres = explode("-", $arg);
	
	$action			= $parametres[0]; // creation
	$objet			= $parametres[1] ?? false; // rubrique
	$id_objet		= $parametres[2] ?? false; // 113
	
	
	# Cas de création d'une nouvelle source avec liaison
	if ($action === "creation" and $objet and $id_objet) {
		
		include_spip('inc/headers');
		redirige_url_ecrire("source_edit", "objet=rubrique&id_objet=113");
		
		# Ou bien je créé directement ici une nouvelle source,
		# ainsi que l'association à l'autre objet,
		# et je redirige vers le formulaire d'édition de la source ?
			
	}

Voilà où j’en suis…

Je ne comprends pas à quel moment l’association à l’autre objet devrait se faire ?

  1. Si je la fais directement dans le fichier d’action, je vais créer une nouvelle source, récupérer son id, puis l’associer à l’autre objet et enfin rediriger vers le formulaire. Ok, c’est faisable, mais si au final l’utilisateur clique sur le bouton d’action mais abandonne le formulaire d’édition de la source (changement d’avis), on se retrouve en BDD avec une source + une laison qui ne servent à rien.

  2. Donc, je me dis qu’il faut plutôt agir au niveau de la fonction traiter du formulaire de l’objet : le bouton d’action redirige vers le formulaire d’édition en lui faisant passer le couple objet-id_objet pour qu’il puisse réaliser l’association en fin de traitement et après l’insertion en base de la nouvelle source.

J’ai néanmoins l’impression que dans la pratique, on privilégie ce type de traitements dans les fichiers d’actions plutôt que dans els formulaires d’édition ?

  1. Si c’est bien le cas, le fichier d’action n’a plus beaucoup de sens ici, il fait juste le passe plat au formulaire d’édition.

  2. Existe t’il une bonne/autre pratique en la matière ? Un plugin objet dont je pourrais m’inspirer ?

Merci aux survivants de ce (trop) long et ennuyeux post de m’avoir lu jusqu’ici !

Si la team formation/documentation est en place, je veux bien partager mes retours d’expérience sur mes incompréhensions entre ce que je comprends de la doc et les points sur lesquels je n’y trouve pas de réponse…

Bonne journée à tous,

Pierre-Jean

Salut,
tout coder à la main, ça peut être assez fastidieux et source d’erreurs.
Est ce que tu connais La fabrique ?

C’est un plugin qui sert à créer des plugins, il peut coder tout ce dont on a besoin pour gérer des relations entre objets (liaisons directes ou indirectes).
C’est en général une bonne base qu’on peut ensuite customiser.

1 « J'aime »

Merci pour ton retour @nicod
En fait, je me rends compte que ma question n’est pas très clair, pour faciliter, je tente de synthétiser :

Je cherche à comprendre comment associer lors de la création d’un nouvel objet, un autre objet éditorial existant.

Comme si je créais un nouvel article qui lors de son premier enregistrement serait directement associé à 1 documents.

Faut-il plutôt gérer l’ajout de ces liaisons dans la partie traiter du CVT de l’objet que l’on créé ou plutôt regarder du côté de l’action mon_objet_edit.php ?

Ah c’est une question bien plus complexe que les objets et leur liaison effectivement… Tu devrais plutôt regarder du côté du plugin Médias, car c’est littéralement ce que fait ce plugin pour les documents qui sont ajoutés pendant la création d’un contenu alors même que ce contenu n’est pas encore créé justement (qu’on n’a pas encore validé pour la première fois le formulaire central). Si j’ai bien compris ce dont tu parles.

De mémoire, les documents sont déjà créés par avance dans la base, puis associés au contenu (article ou autre) quand celui ci vient à être créé vraiment.

Je ne sais pas ce qu’il advient des documents ajoutés quand ensuite on ne valide PAS le contenu à créer. S’ils sont nettoyés par un génie après coup par exemple.

1 « J'aime »

Yes, merci @rastapopoulos c’est exactement ça, tu as si bien et en si peu de mots résumé mes deux problématiques que je me demande si tu n’es pas un LLM de dernière génération :wink:

Ok, je vais fouiller de ce côté là, je découvre tout juste les action/monobjet_edit.php que je m’interroge sur l’usage que je pourrais en faire, pour le moment, j’ai l’impression que ces fichiers servent principalement de « routeur »…

Effectivement, je pourrais pré-créer mes objets avec un statut/flag temporaire et un genie derrière pour nettoyer les objets abandonnés + leurs liaisons, cela semble simple/efficace.

Merci beaucoup !