Как вызвать функции проверки узлов по умолчанию
У меня есть пользовательская форма создания узла, для которой у меня есть собственная функция проверки. Как я могу убедиться, что после моей функции проверки форма пройдет ту же проверку, что и в исходной форме создания узла?
Что-то вроде node_validate
похоже на то, что мне нужно, но это работает с объектами $node
, а не с формами.
Порядок операций, который я считаю лучшим,
- При отправке выполнить пользовательский проверка
- Если пользовательская проверка проходит, запустите обычную проверку узла
- Если проверка узла завершится успешно, вставьте значения в базу данных
Это хороший и друпальный способ?
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);
}
Как правило, код проверки должен входить в обработчик проверки формы. Если обработчик проверки формы установите любую ошибку, обработчик отправки формы не вызывается, и пользователь возвращается в форму, чтобы исправить ошибки в отправленных данных.
node_validate()
решит проблему. Первоначальный процесс проверки не будет затронут.