Как заставить форму Drupal очистить предыдущие результаты - PullRequest
0 голосов
/ 21 сентября 2011

Недавно я работаю над проектом и пытаюсь сгенерировать элементы формы с помощью технологии ajax (реализуя форму с кодами).Ситуация такова, что пользователь должен иметь возможность выбирать из списка опций, и затем из-за его выбора должен появиться другой список опций, а затем из-за его / ее выбора из вторых наборов опций он / она должен увидеть третийсерия опций.теперь проблема в том, что когда пользователь пытается изменить первый параметр в первом наборе, второй вариант будет восстановлен, но третий все еще остается на странице.Я пытался использовать form_sate ['rebuild'] = TRUE, но это не сработало, и все элементы формы исчезли.Может ли кто-нибудь помочь мне увидеть, какой код должен быть реализован и где его следует использовать?

Ответы [ 2 ]

0 голосов
/ 09 ноября 2012

хорошо ... страница формы может содержать предыдущие значения из-за переменных полей $ _POST ..

например, если я хочу отображать чистую форму "добавить" при отправке POST, я делаю этот трюк, чтобы очистить drupalпредыдущие значения формы через ajax:

<?php
// AJAX POST handler...
....
$my_form = drupal_render(drupal_get_form("the_form", ...));
$errors = form_get_errors();
if (!$errors) {
  // re-render clean form, unset your POST fields....
  unset($_POST['link_path']);
  unset($_POST['link_title']);
  unset($_POST['parent']);
  unset($_POST['weight']);
  $my_form = drupal_render(drupal_get_form("the_form", ...));
}
?>
0 голосов
/ 21 сентября 2011

Без какого-либо кода почти невозможно помочь, за исключением, скажем, проверки примеров модулей , в частности модуля ajax_example.

Основной принцип заключается в том, что вам нужен <div> контейнер, окружающий ваши 2-й и 3-й элементы выбора, которые будут заменены набором #ajax на первом элементе.Затем вам понадобится еще один контейнер внутри этого окружения только 3-го элемента выбора, который будет заменен набором #ajax для 2-го элемента выбора.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...