Как создать пользовательский обработчик веб-форм для отправки в SOAP API [закрыто]


У меня есть веб-форма, которая при отправке необходимо опубликовать в веб-службе SOAP. У меня есть поиск в некотором направлении, но я, похоже, ничего не могу найти о SOAP и Drupal 8/Webform. Может ли кто-нибудь указать мне правильное направление для создания пользовательского обработчика для отправки в SOAP.

Я использую Drupal 8.6.16 и Webform 8.x-5.2

 1
Author: kiamlaluno, 2019-05-24

1 answers

В своем пользовательском модуле добавьте папку src/Plugin/WebformHandler и создайте файл Subscription.php. Добавьте следующий код:

<?php
namespace Drupal\<mycustommodule>\Plugin\WebformHandler;

use Drupal\Core\Form\FormStateInterface;
use Drupal\webform\Plugin\WebformHandlerBase;
use Drupal\webform\webformSubmissionInterface;

/**
 * Form submission handler.
 *
 * @WebformHandler(
 *   id = "subscription",
 *   label = @Translation("Subscription"),
 *   category = @Translation("Form Handler"),
 *   description = @Translation("Administers subscriptions via SOAP"),
 *   cardinality = \Drupal\webform\Plugin\WebformHandlerInterface::CARDINALITY_SINGLE,
 *   results = \Drupal\webform\Plugin\WebformHandlerInterface::RESULTS_PROCESSED,
 * )
 */

class Subscription extends WebformHandlerBase {

  /**
   * {@inheritdoc}
   */
  public function defaultConfiguration() {
    return [];
  }

  const SOAP_URL = 'x'; // url of soap call here

  /**
   * {@inheritdoc}
   */
  public function submitForm(array &$form, FormStateInterface $form_state, WebformSubmissionInterface $webform_submission) {

    // The data to send to the API
    $values = $webform_submission->getData();
    $email = strtolower($values['e_mail']);
    $first_name = $values['first_name'];
    $last_name = $values['last_name'];

    // Add your SOAP Call here
    $client = new SoapClient(self::SOAP_URL);
    // .. Go on here
  }
}

Включите модуль и очистите кэш. Теперь в бэкэнде веб-формы перейдите в раздел настройки, а затем электронные письма/обработчики (/администратор/структура/веб-форма/управление//обработчики). Добавьте сюда своего обработчика. Для получения более подробной информации и инструкций см.: https://stefvanlooveren.me/blog/how-create-mailchimp-subscription-drupal-8-webform-module

 6
Author: Stef Van Looveren, 2019-05-24 12:30:50