日付フィールドを含むWebフォームがあります。日付がまだ使用されていないことを確認するコードを実行する必要があります(つまり、他の誰もその特定の日付のWebフォームを送信していないことを確認します)。私はすでにWebフォーム検証モジュールをインストールしており、それを使用できることを知っています(カスタムバリデーターを使用してカスタムモジュールを作成します)が、フォームが送信されるまで検証は実行されません。必要なファイルのアップロードがあるので、アップロードを実行する前に、ユーザーが日付が使用可能かどうかをユーザーが確認できるようにしたいと思います。
これは可能ですか?どうすればいいですか?
日付が利用可能かどうかを確認するには、AJAXを使用する必要があります。
フォームに、日付を確認するボタンを追加します。次に例を示します。
$form['submit-check'] = array(
'#type' => 'submit',
'#value' => '('Check date'),
'#ajax' => array(
'callback' => 'mymodule_check_date_callback',
'wrapper' => 'datecheck-result-wrp',
),
);
ユーザーがボタンをクリックすると、AJAX呼び出しが行われます。AJAXコールバック内で、日付の有効性を確認し、結果をコールバック関数で返すことができます(上記の例のmymodule_check_date_callback())。
AJAXフォームは単純な答えではありません。ドキュメントを確認する必要があります。私は Drupal 7 AJAX Forms documentation を推奨します = Developerモジュールの例 AJAX formを含む例と フォームAPI内部ワークフロー図
Clientside Validation モジュールを通じてそれを行うことを見ることができます。これは、Webform/Webform検証でも機能します。このモジュールの検証はクライアント側であるため、後でではなく早くフィードバックを提供できます。あなたが探している特定の日付チェック機能をすぐにサポートするかどうか、頭の上ではわからないことに注意してください。
可能なアプローチは Availability Calendars モジュールを使用し、次に Webform このモジュールの統合(プロジェクトページから)を利用することです:
顧客の予約プロセスの開始(予約フォームレットサブモジュール):
- カレンダー自体で開始日と終了日を選択し、「今すぐ予約」をクリックします。
- に基づいて事前入力された開始日と終了日。以前の空室検索。
- 予約の詳細については、webformと統合します。