Ragazzi ho il seguente problema: quando salvo un nuovo articolo (content-type) ho la necessità di fare un update in una tabella del database al verificarsi di una certa condizione.
PSEUDOCODICE:
if(condizione verificata){
nel momento in cui salvi il nodo setta il campo del DB;
}
Ho pensato di realizzare un modulo che, sfruttando gli hook, esegua questa semplice operazione. Ho creato i due file (mymodule.info e mymodule.module). Nella gestione dei moduli riesco a vedere ed attivare il modulo da me creato.
All'interno del file mymodule.module ho inserito queste righe di codice:
<?php
function aggiorna_node_validate($node) {
$num_updated = db_update('nome_tabella')
->fields(array(
'nome_campo' => 0,
))
->condition('nome_campo', 1, '=')
->execute();
}
?>
Il problema è che non da segno di vita. Ho provato a sostituire "validate" con "insert", non è cambiato niente. Ho provato anche ad inserire una echo ma nulla, il modulo è attivo ma non fa assolutamente nulla. Non ho mai usato Drupal ma conosco bene il php e credo di aver capito la gestione/funzione degli hook in Drupal.
Vorrei che mi aiutaste a capire quale errore ho fatto perchè le ho provate tutte...
Grazie a tutti e spero nel vostro aiuto...
La funzione si deve chiamare mymodule_node_validate.
Ma attenzione che la validation è un operazione che ha lo scopo di verificare una cerca condizione per (eventualmente) interrompere il flusso di salvataggio di un entità e non per andare a mettere a svolgere operazioni (quali appunto l'inserimento di dati). Per questo è necessari sfruttare l'hook_node_insert o relativi collegati (update, ...)
Ciao
Marco
--
My blog
Working at @agavee
Perfetto, ho "risolto" Installando il modulo "examples" e inserendo il mio codice al posto di quello preesistente.
@Mavimo: grazie per l'ulteriore chiarimento;