Подтверждение ввода в форме Drupal - PullRequest
0 голосов
/ 20 июля 2011

У меня есть форма Drupal, в которую кто-то вводит информацию, и мне нужно выполнить запрос к базе данных, чтобы проверить, является ли она действительной перед отправкой. Я хотел бы либо иметь кнопку, которую пользователь может щелкнуть, чтобы проверить достоверность (или сделать это автоматически после того, как пользователь покинет это поле), а затем отобразить некоторую информацию о своем выборе.
Я знаю, что могу использовать hook_form_submit, чтобы просмотреть форму при ее отправке, а затем остановить процесс, если есть какие-либо ошибки, но я бы хотел, чтобы пользователь мог подтвердить, что он выбрал правильную вещь перед отправкой формы.

Ответы [ 2 ]

2 голосов
/ 02 августа 2011

Я лично не пробовал этот модуль, но это может быть то, что вы ищете:

http://drupal.org/project/ajax

Если вы просто ищете способ выполнять поиск в реальном времени (например, ввести штрих-код книги и получить заголовок), вы также можете использовать функцию автозаполнения Drupal, но для этого потребуется написать собственную функцию автозаполнения для обрабатывать поиск в базе данных.

0 голосов
/ 21 июля 2011

Взгляните на: Базовая форма с обработчиком проверки .Вам просто нужно добавить функцию, похожую на mymodule_myform_validate($form, &$form_state) { ... }.На связанной странице:

"Это добавляет новое поле формы и способ проверки его с помощью функции проверки, также называемой обработчиком проверки."

<?php
function my_module_menu() {
  $items = array();
  $items['my_module/form'] = array(
    'title' => t('My form'),
    'page callback' => 'my_module_form',
    'access arguments' => array('access content'),
    'description' => t('My form'),
    'type' => MENU_CALLBACK,
  );
  return $items;
}

function my_module_form() {
  return drupal_get_form('my_module_my_form');
}

function my_module_my_form($form_state) {
  $form['name'] = array(
    '#type' => 'fieldset',
    '#title' => t('Name'),
    '#collapsible' => TRUE,
    '#collapsed' => FALSE,
  );
  $form['name']['first'] = array(
    '#type' => 'textfield',
    '#title' => t('First name'),
    '#required' => TRUE,
    '#default_value' => "First name",
    '#description' => "Please enter your first name.",
    '#size' => 20,
    '#maxlength' => 20,
  );
  $form['name']['last'] = array(
    '#type' => 'textfield',
    '#title' => t('Last name'),
    '#required' => TRUE,
  );

  // New form field added to permit entry of year of birth.
  // The data entered into this field will be validated with
  // the default validation function.
  $form['year_of_birth'] = array(
    '#type' => 'textfield',
    '#title' => "Year of birth",
    '#description' => 'Format is "YYYY"',
  ); 

  $form['submit'] = array(
    '#type' => 'submit',
    '#value' => 'Submit',
  );
  return $form;
}

// This adds a handler/function to validate the data entered into the 
// "year of birth" field to make sure it's between the values of 1900 
// and 2000. If not, it displays an error. The value report is // $form_state['values'] (see http&#58;//drupal.org/node/144132#form-state).
//
// Notice the name of the function. It is simply the name of the form 
// followed by '_validate'. This is the default validation function.
function my_module_my_form_validate($form, &$form_state) {
  $year_of_birth = $form_state['values']['year_of_birth'];
  if ($year_of_birth && ($year_of_birth < 1900 || $year_of_birth > 2000)) {
    form_set_error('year_of_birth', 'Enter a year between 1900 and 2000.');
  }
}
?>
...