web-dev-qa-db-ja.com

Webフォームの残りの部分を完了するようにユーザーに要求する前に、日付が使用可能であることをどのように検証できますか?

日付フィールドを含むWebフォームがあります。日付がまだ使用されていないことを確認するコードを実行する必要があります(つまり、他の誰もその特定の日付のWebフォームを送信していないことを確認します)。私はすでにWebフォーム検証モジュールをインストールしており、それを使用できることを知っています(カスタムバリデーターを使用してカスタムモジュールを作成します)が、フォームが送信されるまで検証は実行されません。必要なファイルのアップロードがあるので、アップロードを実行する前に、ユーザーが日付が使用可能かどうかをユーザーが確認できるようにしたいと思います。

これは可能ですか?どうすればいいですか?

3
EmmyS

日付が利用可能かどうかを確認するには、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内部ワークフロー図

1
sanzante

Clientside Validation モジュールを通じてそれを行うことを見ることができます。これは、Webform/Webform検証でも機能します。このモジュールの検証はクライアント側であるため、後でではなく早くフィードバックを提供できます。あなたが探している特定の日付チェック機能をすぐにサポートするかどうか、頭の上ではわからないことに注意してください。

0
Patrick Kenny

可能なアプローチは Availability Calendars モジュールを使用し、次に Webform このモジュールの統合(プロジェクトページから)を利用することです:

顧客の予約プロセスの開始(予約フォームレットサブモジュール):

  • カレンダー自体で開始日と終了日を選択し、「今すぐ予約」をクリックします。
  • に基づいて事前入力された開始日と終了日。以前の空室検索。
  • 予約の詳細については、webformと統合します。
0
Pierre.Vriens