web-dev-qa-db-ja.com

プログラムでWebフォームの送信済みフィールド値を取得する

Webフォームから特定のフィールドの送信された値を印刷/エコーするにはどうすればよいですか?これをWebフォーム2で行う必要があります2 PDFモジュールなので、生成されたPDFの出力をより適切にカスタマイズできます。Drupal単純なf_nameを取得するのは素晴らしいことです。

また、Webform APIにももっと関わり始めたいと思います。

つまり

名:送信された名前の値

4
Tom Kiddle

最近の3.xおよび4.xバージョンの webformにはフックベースのAPIがあります を使用して、送信されたwebform値で何かを行うことができます。

hook_webform_submission_insert() または hook_webform_submission_update() のように見てください(たとえば、Webフォームでドラフトが有効になっている場合、最終的な送信はisNew == FalseおよびisDraft == FalseでのUPDATE呼び出しです。 )。

関数はパラメータ$submissionを受け取ります。これは、送信されたフォームの値のPHP配列です...そこから好きなことができます。

2
tenken

ページの送信直後にWebフォームの値を取得するために、グローバル$_POST変数。

または、正しいWebフォーム送信をロードする必要があります。

Drupal 7

Drupal 7(これに従って post )で)する方法の例を次に示します。

module_load_include('inc', 'webform', 'includes/webform.submissions');
$submissions = webform_get_submissions(array('nid'=> 123));

foreach ($submissions as $submission){
    foreach ($submission->data as $row=>$data){
        print '<pre>'; print_r($row); print '</pre>';
        print '<pre>'; print_r($data); print '</pre>';
    }
}

Drupal 8

以下は、Drupal 8でWebフォームの送信を取得する例です。

$entity = \Drupal::entityTypeManager()->getStorage('webform')->load('my_webform');
$form = $entity->getSubmissionForm();
$elements = $form['elements'];

drushを使用した例を次に示します。

drush ev 'print_r(\Drupal::entityTypeManager()->getStorage("webform")->load("repairs_taps")->getSubmissionForm()["elements"]);'
2
kenorb

Drupal 5-7では、 webform_get_submissions 関数。

1
user1359

Drupal 8ソリューション

$entity = \Drupal::entityTypeManager()->getStorage('webform')->load('my_webform');
$form = $entity->getSubmissionForm();
$elements = $form['elements'];

現時点では、Drupal 8)に関数webform_get_submissions()はありません(D7およびD6に存在します)。上記の行は、特定のWebフォームの送信を取得するのに役立ちます。

0
drupalfan