誰かが情報を入力する Drupal フォームがあり、送信する前に有効かどうかを確認するためにデータベース クエリを実行する必要があります。ユーザーが有効性を確認するためにクリックできるボタンを用意し (または、ユーザーがそのフィールドを離れた後に自動的に行われるようにする)、選択に関する情報を表示したいと思います。
hook_form_submit を使用して送信時にフォームを確認し、エラーがあればプロセスを停止できることはわかっていますが、ユーザーがフォームを送信する前に正しいものを選択したことを確認できるようにしたいと考えています。
2 に答える
2
私はこのモジュールを個人的に試したことはありませんが、あなたが探しているものかもしれません:
http://drupal.org/project/ajax
リアルタイム検索を行う方法を探しているだけなら (例えば、本のバーコードを入力してタイトルを取得する)、Drupal のオートコンプリート機能を使用することもできますが、データベースを処理するために独自のオートコンプリート関数を作成する必要があります。ルックアップ。
于 2011-08-02T15:53:36.077 に答える
0
見てみましょう:検証ハンドラーを使用した基本フォーム。本当に。に似た関数を追加する必要があります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://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.');
}
}
?>
于 2011-07-21T17:22:32.557 に答える