У меня возникла ситуация, когда моя форма не проверяется, мне нужно удалить все, кроме первого аргумента из URL. Причина этого в том, что результаты моей формы отображаются ниже формы в области содержимого. Если форма не проверяется, мне нужно удалить любые предыдущие результаты.Форма перенаправления при отказе проверки
Я пробовал следующее в моей функции form_validate.
// Check if there were any errors.
$errors = form_set_error();
if (!empty($errors)) {
drupal_goto(arg(0));
}
Целевая страница, очевидно, такая же, за исключением того, что все аргументы, кроме первого, удаляются. Проблема в том, что Drupal забывает о предыдущем состоянии формы и ошибках, которые были вызваны функцией form_validate.
Я также попытался изменить #redirect значение в моей функции form_validate, но безрезультатно.
Любые предложения?
На пользовательском веб-сайте PHP ваш метод будет работать. Но у Drupal есть собственный API для обработки форм. На самом деле это больше вопрос Drupal, чем вопрос проверки PHP или даже формы. – Icode4food
Быстрое сканирование документа API, в котором упоминается массив $ form_state ['values'], который, как я думаю, представляет собой все ваши отфильтрованные значения формы, но вы правы, на первый взгляд это не похоже на разбор чего-либо, кроме $ _POST. Почему бы не сохранить $ form_state в сеансе, а затем притвориться, что форма была проверена и перезаписать $ form_state с значениями сеанса – gawpertron