Menggunakan modul Paragraphs di Drupal 8, saya mencoba untuk mengubah perilaku bidang formulir yang terkandung dalam bidang paragraf. Ini agar saya dapat menambahkan perilaku seperti callback AJAX, menyembunyikan tampilkan bidang lain menggunakan status dll.
Saya dapat mengakses bidang induk paragraf menggunakan fungsi ini:
function hook_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id) {
}
Tetapi bagaimana saya mengakses bidang di dalam paragraf?
Saya sudah mencoba hook_field_widget_form_alter
tetapi tidak berhasil.
Bagaimana saya melakukan ini?
Catatan: Saya masih cukup baru untuk pengembangan Drupal.
8
paragraphs
bart_88
sumber
sumber
kint($form);
dankint($form_id);
itu akan memberi Anda id untuk alter hook id dan kemudian itu juga akan memberi Anda path array untuk apa yang ingin Anda ubah.Jawaban:
Sejak paragraf ^ 1.3 Anda dapat menggunakan hook_field_widget_WIDGET_TYPE_form_alter () (saya menautkan versi 8.2 karena ada komentar yang bagus tentang menggunakan hook).
Anda dapat melihat contoh berikut di
modules/contrib/paragraphs/tests/modules/paragraphs_test/paragraphs_test.module
sumber
paragraphs
bukanentity_reference_paragraphs
./* @var $paragraph \Drupal\paragraphs\Entity\Paragraph */ $paragraph = $form_state->get('paragraph'); $delta = $context['delta'];
Menggunakan
hook_form_alter
Anda dapat mengubah apa pun dalam formulir, bahkan barang yang berasal dari widget. Ini dapat dengan mudah menjadi sedikit berantakan dan cenderung pecah dengan mudah ketika Anda dipusingkan dengan widget.Jika Anda ingin mengubah widget apa yang dapat Anda lakukan, buat widget sendiri. Widget adalah plugin (kelas PHP) sehingga Anda dapat membuat sendiri subkelas yang Anda miliki dan mengubahnya baik dengan sepenuhnya menimpa fungsi atau dengan memperluas fungsi.
Widget menggunakan sistem anotasi, jadi Anda perlu mendefinisikan nama, id dll sebagai komentar di atas kelas. Cara termudah adalah dengan menyalin widget asli dan mengubah beri nama dan id baru, sisanya harus seperti yang seharusnya.
Ingatlah untuk menghapus cache untuk membuat Drupal menemukan plugin baru.
sumber
Ada tambalan untuk ini dalam antrian masalah Paragraf .
Itu menambah kait baru:
sumber
hook_field_widget_WIDGET_TYPE_form_alter()
.