Показать предыдущее значение страницы в многоступенчатой ​​веб-форме Drupal? - PullRequest
0 голосов
/ 20 июня 2011

В многоступенчатой ​​веб-форме Drupal , возможно ли показать значение, введенное на странице предыдущего шага?

Например, на странице первого шага фиксируется usernameВ поле «Джон» можно ли на следующем шаге отобразить приветствие, показывающее Hello John, ...?

пс для анонимного пользователя.

Ответы [ 2 ]

2 голосов
/ 28 августа 2014

Я знаю, что это старый, но мне нужно то же самое, поэтому я надеюсь, что это поможет другим в поиске.

Мне потребовались значения из предыдущего шага веб-формы для моего пользовательского компонента веб-формы. Хук _webform_redner_[component](...) не предоставляет form или form_state, а также данные предыдущих шагов (больше, чем предыдущий шаг, который был только что отправлен) отсутствует в $_POST.

Чтобы решить эту проблему, я вручную извлекаю форму из системы кэширования форм Drupal, используя form_build_id, который находится в переменной $_POST.

  /* ... */
  $form_state = array();
  // Get the form_state to pass on to our build function.
  // Webforms doesn't provide it at this point so we'll need to manually get it using the form's build_id.
  $form = form_get_cache($_POST['form_build_id'], $form_state); 
  /* ... */

Теперь у вас есть все form и form_state, которые также включают значения предыдущих шагов.

0 голосов
/ 20 июня 2011

Взгляните на пример многошаговой формы здесь: http://drupal.org/node/717750

Общая идея заключается в том, что в функции отправки вы сохраняете все опубликованные значения в $form_state['storage'], к которым вы можете обратиться позже на следующих шагах.

Редактировать: посмотрите на пример только что созданных кнопок «Предыдущая» и «Следующая»: http://zgadzaj.com/basic-drupal-multipart-form-example-with-previous-and-next-buttons

...