2010-01-05 50 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对于通过循环运行的每一个节点?