Membuat plugin handform webform khusus untuk drupal 8.
Dokumen ini menganggap Anda sudah menginstal dan mengaktifkan webform dan webform-ui
1) Buat formulir web Anda. - Buka struktur -> formulir web dan tekan tombol "+ Tambahkan formulir web". - Anda dapat menggunakan ui atau menggunakan yaml, itu terserah Anda. contoh yaml untuk formulir satu bidang yang mengambil alamat email:
email:
'#type': email
'#title': email
'#title_display': invisible
'#placeholder': 'ENTER YOUR EMAIL'
'#attributes':
class:
- my-ip
Lekukan itu penting untuk ubi jadi pastikan Anda melakukannya dengan benar. indentasi adalah spasi.
Sekarang simpan formulir Anda.
2) Membuat plugin handform webform
Selanjutnya kita dapat membuat plugin baru yang akan muncul di bagian "Email / Penangan" saat mengedit formulir web. Saya akan menyebutnya myhandler, Anda dapat menyebutnya apa yang Anda inginkan, asalkan Anda mengganti semua menyebutkan myhandler dengan nama yang Anda pilih.
a) Buat folder baru untuk plugin Anda, lakukan ini di root drupal Anda (disebut di sini sebagai / var / www / html /) di subfolder berikut: / var / www / html / modules / Custom / myhandler
b) Buat file baru di direktori di atas bernama myhandler.info.yml dalam file ini sebagai berikut:
name: My Form Handler
description: handles form submits, does something with them.
package: Custom
type: module
version: 1.0
core: 8.x
3) Buat direktori src di direktori modul Anda, misalnya: / var / www / html / modules / Kustom / myhandler / src di src buat Plugin di Plugin buat WebformHandler
(ini dapat dicapai dalam sekali pakai
mkdir -p /var/www/html/modules/Custom/myhandler/src/Plugin/WebformHandler/
yang akan membuat seluruh struktur dalam sekali jalan menggunakan flag -p ke mkdir.)
4) Buat file baru /var/www/html/modules/Custom/myhandler/src/Plugin/WebformHandler/MyFormHandler.php
dalam file itu ikuti kode php berikut, saya telah meninggalkan pengaturan form konfigurasi sehingga Anda dapat melihat cara mengkonfigurasi plugin Anda jika diperlukan.
<?php
namespace Drupal\myhandler\Plugin\WebformHandler;
use Drupal\Core\Session\AccountInterface;
use Drupal\Core\Serialization\Yaml;
use Drupal\Core\Form\FormStateInterface;
use Drupal\webform\Plugin\WebformHandlerBase;
use Drupal\webform\webformSubmissionInterface;
/**
* Form submission handler.
*
* @WebformHandler(
* id = "myhandler_form_handler",
* label = @Translation("MyHandler form handler"),
* category = @Translation("Form Handler"),
* description = @Translation("Do something extra with form submissions"),
* cardinality = \Drupal\webform\Plugin\WebformHandlerInterface::CARDINALITY_SINGLE,
* results = \Drupal\webform\Plugin\WebformHandlerInterface::RESULTS_PROCESSED,
* )
*/
class MyFormHandler extends WebformHandlerBase {
/**
* {@inheritdoc}
*/
public function defaultConfiguration() {
return [
'submission_url' => 'https://api.example.org/SOME/ENDPOINT',
];
}
/**
* {@inheritdoc}
*/
public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
$form['submission_url'] = [
'#type' => 'textfield',
'#title' => $this->t('Submission URL to api.example.org'),
'#description' => $this->t('The URL to post the submission data to.'),
'#default_value' => $this->configuration['submission_url'],
'#required' => TRUE,
];
return $form;
}
/**
* {@inheritdoc}
*/
public function submitForm(array &$form, FormStateInterface $form_state, WebformSubmissionInterface $webform_submission) {
// Your code here.
// Get an array of the values from the submission.
$values = $webform_submission->getData();
// Get the URL to post the data to.
$post_url = $this->configuration['submission_url'];
$message = "MyHandler got form data:".print_r($values,1);
\Drupal::logger('myformhandler')->error($message);
return true;
}
}
?>
5) Aktifkan modul MyHandler Anda (menggunakan menu drush atau extended) dan kemudian buat kembali cache drupal Anda ("drush cr" dari mana saja di bawah root drupal Anda (/ var / www / html di sini) akan melakukannya jika Anda menggunakan drush)
6) edit formulir web Anda, buka "Email / Penangan" dan klik tombol "+ Tambahkan Penangan" Anda akan melihat plugin Anda terdaftar, klik Tambah Handler, Anda sekarang akan melihat kotak meminta URL pengiriman. klik tombol Simpan. Jika sesuatu tidak beres, atau tidak berfungsi, periksa log kesalahan apache, Anda mungkin menemukan sesuatu yang bermanfaat di sana.
7) Tes formulir Anda - buat pengajuan ke formulir, dan kemudian periksa log pengawas (drush ws), Anda harus melihat nilai yang dikirim kepadanya. Mereka mungkin terpotong dalam output yang Anda lihat, jangan panik, semuanya ada di sana. Apa yang Anda lakukan dengan ini sekarang terserah Anda.
Semoga ini bisa membantu seseorang. Saya menggulungnya bersama-sama dari barang-barang yang saya temukan di sekitar tempat itu dan menulisnya menjadi satu dokumen. Terima kasih kepada yang lain yang membawaku ke sini.
hook_form_alter()
, atau agak sulit untuk memberi tahu Anda apa yang Anda lakukan salah. Anda juga harus mengatakan bentuk mana yang ingin Anda ubah.