2010-01-05 49 views
0

我試圖將它們保存到數據庫之前驗證一組節點:Drupal6:試圖從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; 
    } 
} 

node_validate文檔說,它將調用form_set_error()表明爲什麼該節點尚未驗證。但是,上述代碼不會發生這種情況。我所得到的是我手動設置的錯誤。我究竟做錯了什麼?

+0

是否在某處設置了節點ID? – streetparade 2010-01-05 20:48:09

回答

0

試試這個 $form應該是一個數組!

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; 
    } 
} 

或者不使用的,如果beause node_validate doesntreturn truefalse;

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

注意到node_validate取作爲第一參數的對象和作爲第二參數的陣列

1

這是不是可以更有用?

$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; 
    } 
} 

,而不是返回$success作爲FALSE對於通過循環運行的每一個節點?