2

フォームの状態をデータベースに保存しようとしていますが、エラー検証を含む一覧ページで表示したいと考えています。

つまり、以前に保存したフォームの状態をデータベースから検証したいと考えています。

これはノード型のフォームです。

node_validateノードを送信する前にデータをフェッチするため、すでに機能しないことを試していました。nidがなく、そのために機能していません

また、試し drupal_validate_formてみましたが、表示されています

[form_token] => The form has become outdated. Copy any unsaved work in the form below and then reload this page

編集
任意の助けを借りて、「フォーム入力をデータベースに保存し、フォームを送信せずにデータベースから取得する方法.

前もって感謝します

どんな助けでも最も感謝しています。

4

1 に答える 1

2

Drupal Core を見るincludes/form.incと、drupal_validate_form関数に次のように表示されます。

if (isset($form['#token'])) {
    if (!drupal_valid_token($form_state['values']['form_token'], $form['#token'])) {
      $path = current_path();
      $query = drupal_get_query_parameters();
      $url = url($path, array('query' => $query));

      // Setting this error will cause the form to fail validation.
      form_set_error('form_token', t('The form has become outdated. Copy any unsaved work in the form below and then <a href="@link">reload this page</a>.', array('@link' => $url)));

      // Stop here and don't run any further validation handlers, because they
      // could invoke non-safe operations which opens the door for CSRF
      // vulnerabilities.
      $validated_forms[$form_id] = TRUE;
      return;
    }
  }`

これは、「フォームが古くなっています」というメッセージがここに設定されていることを示しています。したがって、このメッセージが表示されないようにするには、設定を解除してisset($form[#token'])条件を false にすることができます。#token

検証するフォームの状態をロードし、 を呼び出す unset($form[#token']);前に を呼び出すだけdrupal_validate_formです。

于 2014-09-12T19:37:42.960 に答える