Hook _nodeapi case submit

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.

Bonjours à tous,

J'utilise actuellement le hook nodeapi mais je n'arrive pas à changé les valeur avant l'enregistrement d'un noeud et je ne sais pas pourquoi pourtant je suis bien ce qui est dit sur le tuto :

<?php
function facture_nodeapi($node, $op)
{
   
//Si c'est un noeud de type facture
  
if ($node->type == 'personne')
    {
      switch (
$op)
       {
          case
'submit' :
         
          
node->age = 8;
      }
  }
}
?>

je pense que c'est lors du node->age que ça coince mais je ne sais pas comment faire si quelqu'un peut m'aider ce serais cool.

Merci d'avance.

Version de Drupal : 

  • Ton code ne respecte pas les coding standards de Drupal.
  • il faut passer $node par reference dans le hook_nodeapi, donc facture_nodeapi(&$node, $op)
  •           case 'submit' :
             
               node->age = 8;
          }

    Il manque le "&" devant node.

  • concernant $node->age, a toi de verifier sur la valeur ici est là bonne. print_r($node) ou dsm($node) si tu as devel installé, afin de verifier la clé.

Oula en effet je dois avouer que j'ai fait assez fort là XD j'arrive pas à comprendre ce que j'ai voulu dire, en fait c'est une épreuve de décryptage ... bref ça me réussit pas les écrans 24/24 surtout pour bosser enfin bon fini de raconter ma vie là XD.

Donc prenons un exemple j'ai un type de nœud 'personne' avec un titre(nom), un prénom et un age. Se qui me donne :

Label : Nom ; Nom : field_titre;
Label : Prénom ; Nom : field_prenom;
Label : Age ; Nom : field_age;

Donc si je désire incrémenter l'age suivant la taille de la chaine de caractères du prenom je devrais faire un truc comme ça :

<?php
function facture_nodeapi(&$node, $op)
{
   
//Si c'est un noeud de type personne
  
if ($node->type == 'personne')
    {
      switch (
$op)
       {
          case
'submit' :
        
          
$node->age += strlen('$node->prenom');
      }
  }
}
?>

J'ai bon ou pas??? Par ce que si j'ai bon sa veut dire que mon erreur n'est pas a cette endroit.

Merci à toi Haza de m'aider jusqu'au bout c'est cool.

J'ai suivie à la lettre toutes tes explications très claire ça devrait donc fonctionné sans problème mais non ... quand je met :

<?php
function facture_nodeapi(&$node, $op)
{
   
//Si c'est un noeud de type personne
  
if ($node->type == 'personne')
    {
      switch (
$op)
       {
          case
'submit' :
       
          
$node->field_age[0]['value'] = 50;
      }
  }
}
?>

Rien ne se passe mon module est tout simplement ignoré...

HA HA HA HA qu'elle abruti que je suis il faillais utiliser presave pour ce que je voulais faire en tout cas ça fonctionne maintenant et tout ça grâce à toi ... je sais pas si un jour je pourrais te rendre la pareil mais sache que heureusement que des gars comme toi existe sinon le monde ne serais pas le même (en tout cas le monde d’internet XD)

Encore merci et si un jours t'as besoin d'aide hésite pas met moi dans ton répertoire à une dette envers moi ;).