2010-01-05 5 views
0

Je suis en train de valider un ensemble de noeuds avant de les enregistrer dans la base de données:drupal6: Essayer d'obtenir des erreurs de node_validate()

foreach ($nodes_to_save as $node) { 
    if (! (node_validate($node, $form))) { 
     form_set_error('', t('Node %title did not validate. No nodes were saved.', array('%title' => $node->title))); 
     $success = FALSE; 
     break; 
    } 
} 

La documentation node_validate dit qu'il appellera form_set_error() d'indiquer pourquoi le noeud n'a pas été validé. Cependant, cela n'arrive pas avec le code ci-dessus. Tout ce que je reçois est l'erreur que je définis manuellement. Qu'est-ce que je fais mal?

+0

L'ID de noeud est-il défini quelque part? – streetparade

Répondre

0

essayez ce le $form devrait être un tableau!

foreach ($nodes_to_save as $node) 
{ 
    if (! (node_validate($node, $form))) 
    { 
     form_set_error('', t('Node %title did not validate. No nodes were saved.', &drupal_static(__FUNCTION__)); 
     $success = FALSE; 
     return $success; 
    } 
} 

Ou DonT utiliser le si beause node_validate doesntreturn true ou false;

foreach ($nodes_to_save as $node) 
{ 
     node_validate($node, $form); 
     $success = FALSE; 
     return $success; 
    } 
} 

noter que node_validate prend comme premier paramètre un objet et comme second paramètre un tableau

1

Ne serait-ce pas plus utile?

$success = true; 
foreach ($nodes_to_save as $node){ 
    node_validate($node); 
    //returns null or array 
    $errors = form_get_errors(); 
    //if there was an error, send an extra message indicating the node that was not saved 
    if($errors){ 
     form_set_error('', t('Node %title did not validate. It was not saved.', array('%title' => $node->title))); 
     $success = false; 
     break; 
    } 
} 

au lieu de retourner $success comme FALSE pour chaque noeud qui est exécuté dans la boucle?