Как вызвать функции проверки узлов по умолчанию


У меня есть пользовательская форма создания узла, для которой у меня есть собственная функция проверки. Как я могу убедиться, что после моей функции проверки форма пройдет ту же проверку, что и в исходной форме создания узла?
Что-то вроде node_validate похоже на то, что мне нужно, но это работает с объектами $node, а не с формами.
Порядок операций, который я считаю лучшим,

  1. При отправке выполнить пользовательский проверка
  2. Если пользовательская проверка проходит, запустите обычную проверку узла
  3. Если проверка узла завершится успешно, вставьте значения в базу данных

Это хороший и друпальный способ?

Author: htoip, 2012-06-16

2 answers

Если ваша форма имеет структуру, аналогичную структуре, используемой для формы редактирования узла, то вы можете использовать node_validate(), которая вызывается из обработчика проверки формы для формы редактирования узла.

function node_form_validate($form, &$form_state) {
  node_validate($form_state['values'], $form);
}

node_validate() преобразует первый аргумент в объект, используя следующий код.

  // Convert the node to an object, if necessary.
  $node = (object) $node;
  $type = node_get_types('type', $node);

Код вашего обработчика проверки формы должен быть похож на следующий.

function mymodule_form_validate($form, &$form_state) {
  // Run your validation code.
  node_validate($form_state['values'], $form);
}

Как правило, код проверки должен входить в обработчик проверки формы. Если обработчик проверки формы установите любую ошибку, обработчик отправки формы не вызывается, и пользователь возвращается в форму, чтобы исправить ошибки в отправленных данных.

 2
Author: kiamlaluno, 2012-06-16 16:27:58

node_validate() решит проблему. Первоначальный процесс проверки не будет затронут.

 1
Author: Tareq Assaf, 2012-06-18 13:03:19