Message d'avertissement

The subscription service is currently unavailable. Please try again later.

[Résolu] Quelle fonction utiliser pour agir sur le traitement des données d'un noeud?

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour,

Lorsque j'ajoute un noeud ou que je l'édite, j'aimerais compléter un champs par un autre champs visible.

J'aimerais compléter un champs par un autre lorsque l'on clique sur "Enregister".

Il faudrait que je puisse faire cette opération lors du traitement du formulaire.

Exemple:

<?php
$form
['group_moteur']['field_essai_2']['0']['value'] = $form['group_moteur']['field_essai']['0']['value'] + 10;
?>

Quelle fonction utiliser pour faire cela? preprocess_node()?

Merci d'avance!!

Forum : 
Version de Drupal : 

Preprocess_node est appelée pour la mise en forme, cela ne me semble pas convenir si tu veux "physiquement" changer la valeur d'un champ (cad en base de données). Pour cela, soit utilise le module "computed field", soit (mieux à mon sens), crée ton propre module, implémente le hook_nodeapi (met cela dans google pour la doc), et implémente l'opération "presave".

Merci beaucoup pour ta réponse.

Dans un premier temps je vais essayer le module "computed field" et si je n'y arrive pas avec j'essayerais la function hook_nodeapi (surement beaucoup plus compliqué à comprendre pour mon niveau).

-------[Edition]-------

Le module marche à merveil. Grâce à lui je suis arrivé à faire ce que je voulais. Merci beaucoup Yoran!

Salutations.
Clément

Salut Yoran,

Voilà je suis entrain de revenir en arrière.

En faite, je suis obligé d'utiliser la function hook_nodeapi pour tester des champs (case 'validate'), j'aimerais donc utiliser 'presave' ce qui m'éviterais d'avoir un module en plus.

Le champ que j'essaye de remplir est un champ texte (liste déroulante).

Voici les valeurs autorisées:
< 1 000 €
1 000 à 2 000 €
2 000 à 3 000 €
3 000 à 4 000 €

4 000 €

J'arrive à rentrer un valeur dans mon champ mais pas de caractères spéciaux (€ >).

Est-ce que tu connaîtrais pas la solution pour y remédier?

<?php
  $node
->field_gamme_prix_france[0]['value'] = '> 4 000 €';// m'affiche 4 000
?>

Merci d'avance!

Salut Thib,

Effectivement ça marcherait mais après ça ne correspond plus avec ma liste déroulante.

Je m'explique: Si dans ma liste déroulante j'ai l'option "4000 €" et que je remplis le champ par "4000 &euro;". Lorsque j'afficherais les options de ma liste déroulante dans views (filtre exposé) par exemple, le noeud en question ne sera pas affiché puisque pas égale.

J'ai donc heu l'idée de remplacer les € de ma liste par le code html mais visiblement, les listes déroulantes texte ne comprennent pas le langage code html...

Je te remercie pour avoir essayé de m'aider, je crois que pour finir, je vais utiliser le module car avec ça marche.