如何在提交表单时捕获表单并将表单值转发给Dotmailer?

时间:2018-09-27 12:34:53

标签: drupal-8

我被要求对Drupal 8站点进行更改(我不是Drupal开发人员),客户需要一个与Dotmailer链接的查询表。在主题内,我尝试根据我在网上找到的一些信息来创建处理程序。但是我不知道它在做什么。我检查了Drupal的日志部分,没有任何记录表明自定义处理程序已执行。

我的主题名为abc-primary,在主题文件夹中,我创建了具有以下内容的文件abc_primary.theme;

<?php

use Drupal\media\Entity\Media;
use Drupal\Core\Form\FormStateInterface;

/**
 * Implements hook_form_system_theme_settings_alter().
 */
function abc_primary_form_system_theme_settings_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state) {
    $theme_file = drupal_get_path('theme', 'abc_primary') . '/abc_primary.theme';
    $build_info = $form_state->getBuildInfo();
    if (!in_array($theme_file, $build_info['files'])) {
        $build_info['files'][] = $theme_file;
    }
    $form_state->setBuildInfo($build_info);

    $form['#submit'][] = 'abc_primary_form_system_theme_settings_submit';
}

function abc_primary_form_system_theme_settings_submit(&$form, \Drupal\Core\Form\FormStateInterface $form_state) {
    // TODO: Extra submission logic.
    // This submit handler will be called before default submit handler for this form.
    \Drupal::logger('mymodule')->notice('mymodule submit ') ;
}

以上是否正确或我做错了什么?

1 个答案:

答案 0 :(得分:1)

创建一个新模块,并定义以下方法:

function mymodule_form_node_form_alter(&$form, FormStateInterface $form_state) {
    //you may want to check your form_id by
    // $form['#form_id'] 
    $form['actions']['submit']['#submit'][]  = 'mymodule_node_form_submit';
}

function mymodule_node_form_submit($form, FormStateInterface $form_state) {
   // get values from form_state
   //log or send to desired web service
}

希望有帮助。