2011-10-06 2 views
0

J'ai un crochet d'insertion qui attrape les nœuds lorsque l'utilisateur ajoute un nœud. Alors, voici mon code:Echec du crochet d'insertion Drupal

function blah_insert($node){ 
    $record = array(
      'nid' => (int) $node->nid 
    ); 
    drupal_write_record('table_name', $record); 
} 

schéma ::

table_name(
    nid  int primary key not null 
) 

Effectuer un contrôle sur la valeur de retour des résultats de drupal_write_record dans FAUX. db_query ne fonctionne pas non plus. var_dump confirme que tous les champs sont là où ils sont censés être.

Les nœuds sont correctement insérés dans les tables de nœuds mais pas dans la table définie par le schéma dans mon fichier d'installation (non écrit comme le schéma que j'ai ci-dessus bien sûr - nid est défini comme int et tous les autres champs pertinents).

Quelqu'un a-t-il une idée de ce qui se passe?

Répondre

1
  1. Assurez-vous que votre module est installé et activé
  2. Assurez-vous que votre nom de module est définitivement nommé blah (ou tout ce que vous mettez avant _insert
  3. Assurez-vous que vous utilisez le crochet droit .. .si votre module n'est pas responsable de la définition d'un type de contenu (c'est-à-dire d'un module 'node'), alors vous utilisez le mauvais: hook_insert: "Ce hook n'est invoqué que sur le module qui définit le type de contenu du noeud Il se peut que vous cherchiez hook_node_insert() à la place, qui répond à l'insertion d'un nœud de n'importe quel type
  4. Lorsque vous implémentez des hooks dans votre module, assurez-vous d'effacer les caches ensuite, selon la version de Drupal utilisée, ces implémentations peuvent être mises en cache pour un accès plus rapide et ne seront pas récupérées tant que le cache n'est pas effacé.
  5. Vérifiez que votre table personnalisée existe réellement dans la base de données! Si vous ne prenez pas le devel module, installez-le et visitez/devel/reinstall où vous pouvez invoquer une réinstallation complète de votre module.

Une fois que vous avez vérifié si ceux est encore ne fonctionne pas il est symptomatique d'un problème plus large avec votre installation de Drupal ... si votre schéma est comme vous l'avez dit est au-dessus alors il n'y a aucune raison drupal_write_record() ne fonctionnerait pas si la fonction est en cours d'exécution.

+0

ouais j'ai déjà trouvé le problème, c'était une convention de nommage étrange. Pointage sur hook_insert() aide aussi. Je vous remercie! –