誰かが情報を入力するDrupalフォームがあり、送信前に有効かどうかを確認するためにデータベースクエリを実行する必要があります。私は、ユーザーがクリックして有効性を確認するためのボタン(またはユーザーがそのフィールドを離れると自動的に行われるようにする)を持っていて、その選択に関する情報を表示したいと思います。
私はhook_form_submitを使用してフォームが送信されたときにそのフォームをレビューし、エラーがあればプロセスを停止することができますが、ユーザーがフォームを送信する前に正しいものを選択したことを確認できるようにしたいと思います。Drupalフォームの入力の妥当性確認
0
A
答えて
2
私は個人的にこのモジュールを試していないが、それはあなたが探しているものかもしれません:あなただけをリアルタイムで行う方法を探しているなら
http://drupal.org/project/ajax
(例えば、ブックバーコードを入力してタイトルを取得するなど)、Drupalのオートコンプリート機能を使用することもできますが、データベースルックアップを処理する独自のオートコンプリート機能を作成する必要があります。
0
Basic form with validate handlerをご覧ください。実際には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.');
}
}
?>
+0
これを正しく読んでいる場合、ユーザーは入力が有効になる前に依然としてsubmitをクリックしなければなりません。私は彼らが提出をクリックする前に入力が有効かどうかをチェックする方法を探しています(例えば、書籍のバーコードを入力した後、提出する前に書籍の名前を教えます)。そうすれば、たとえそれが「有効な」エントリであっても、間違ったものを間違って入力してしまうことはありません。 –
関連する問題
- 1. 入力レールの妥当性確認
- 2. 入力データの妥当性確認
- 3. HTML5フォームの入力日時 - ローカルの妥当性確認
- 4. フォーム提出中の入力ボックスの妥当性確認
- 5. ファイルのCodeigniterフォームの妥当性確認
- 6. フォーム入力フィールドの妥当性検査
- 7. フォーム提出後の妥当性確認の確認
- 8. テキストフィールドの妥当性確認
- 9. ログインの妥当性確認
- 10. チェックボックスの妥当性確認
- 11. 妥当性確認のアカウント
- 12. スワッガーの妥当性確認
- 13. フォームフィールドの妥当性確認
- 14. ウェブサイトの妥当性確認
- 15. テキストフィールドの妥当性確認
- 16. パスワードフィールドの妥当性確認
- 17. データの妥当性確認
- 18. ラジオボックスの妥当性確認
- 19. フォーマルの妥当性確認
- 20. フォームグループの妥当性確認
- 21. エラーの妥当性確認
- 22. 入力フィールドがテーブル内にある場合のフォームの妥当性確認
- 23. VBでの入力の妥当性確認
- 24. モーダルでの入力フィールドの妥当性確認
- 25. JAX-RSメソッドの入力パラメータの妥当性確認
- 26. キャレット位置のTextBox入力の妥当性確認
- 27. 非表示のマルチチェックボックス/入力フィールドの妥当性確認
- 28. 入力文字列の妥当性確認
- 29. angle ng-repeat入力の妥当性確認
- 30. 妥当性確認symfony 1.4
これはカスタムフォームですか? – Laxman13
ええ、私はそれを自分で作成しました –