WebフォームエンティティのフォームIDを出力する必要があります。使用して、有効なWebフォームのチャンクをデータベースから直接ロードします
\Drupal::entityTypeManager()->getStorage('webform')->loadMultiple();
その後、webformエンティティのform_idを出力する必要があります。
これを達成する方法は?返されたエンティティオブジェクトに格納されている「form_id」が表示されません。
更新:
次のスクリプトを使用して、フォームIDの静的バージョンを受け取ることができます。
$target_form_id = str_replace('email_confirm_redirect_2_', '', $entity->getSubmissionForm()['#form_id']);
まだ本当にプロではない
フォームIDを保存するのではなく、WebフォームIDを保存して、フォームの変更を確認するだけです。 Webformは独自のフォーム変更フックを提供しており、Webformに対してのみ起動し、専用のインクルードファイルにフックを配置できます。
フックからWebフォームを取得する例については、 _third_party_settings/webform.honeypot.inc
_ のhoneypot_webform_submission_form_alter()
を参照してください。
_/**
* Implements hook_webform_submission_form_alter().
*/
function honeypot_webform_submission_form_alter(&$form, FormStateInterface $form_state, $form_id) {
// <snip>
/** @var \Drupal\webform\WebformSubmissionInterface $webform_submission */
$webform_submission = $form_state->getFormObject()->getEntity();
$webform = $webform_submission->getWebform();
_
そこから$webform->id()
を使用して、WebフォームIDを取得できます。