Drupal6: Попытка получить ошибки от node_validate () - PullRequest
0 голосов
/ 05 января 2010

Я пытаюсь проверить набор узлов перед сохранением их в базе данных:

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(), чтобы указать, почему узел не прошел проверку. Однако этого не происходит с приведенным выше кодом. Все, что я получаю, это ошибка, которую я установил вручную. Что я делаю не так?

Ответы [ 2 ]

1 голос
/ 24 июня 2011

Не будет ли это более полезным?

$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 для каждого отдельного узла, который проходит через цикл?

0 голосов
/ 06 января 2010

попробуйте это $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;
    }
}

Или не используйте if beause node_validate doesnt return true или false;

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

обратите внимание, что node_validate принимает в качестве первого параметра объект, а в качестве второго параметра - массив

...