Bagaimana saya bisa menemukan ID formulir formulir?

22

Bagaimana saya mendapatkan id formulir dari formulir saya? Saya baru saja mulai membuat modul saya dan saya terhenti. Saya mendapat kode ini dari orang lain dan saya mencoba untuk menyesuaikannya:

function hook_form_alter(&$form, &$form_state, $form_id) {
  if ($form_id == 'the form id for the node form') {
    $form['#submit'][] = 'my_custom_submit_handler';
  }
}
enchance
sumber
2
Kemungkinan Gandakan: drupal.stackexchange.com/questions/5605/…
Laxman13
Silakan lihat jawaban untuk pertanyaan di atas, itu juga harus menjawab pertanyaan Anda
Laxman13
1
Pertanyaannya di sini sangat berbeda; itu tidak bertanya bagaimana mengidentifikasi elemen formulir, tetapi yang merupakan ID formulir yang harus diperiksa dalam implementasi hook_form_alter(). Mengingat juga kode yang dilaporkan, saya akan mengatakan pertanyaan ini berbeda.
kiamlaluno

Jawaban:

17

Coba cetak variabel bentuk dengan fungsi PHP print_r .

function hook_form_alter(&$form, &$form_state, $form_id) {
  print_r($form);
}

Saat Anda mengunjungi halaman tempat formulir aktif, variabel (dan nama) akan ditampilkan.

Cara yang lebih mudah untuk mengakses (atau lebih tepatnya melihat) informasi akan menggunakan fungsi dpm () yang disediakan oleh modul Devel . Anda bisa menggunakannya dengan cara yang sama seperti Anda menggunakan print_r.

Bart
sumber
1
Dengan kode yang dilaporkan, tidak perlu melihat konten $formvariabel.
kiamlaluno
10
Juga $ form_id adalah param Anda dapat langsung mencetaknya !!
niksmac
1
Jika Anda memiliki Devel diaktifkan, hanyadpm($form_id);
Tidak ada Sssweat
35

Menemukan ID FORMULIR tanpa menginstal modul

Menemukan Formulir ID sangat mudah, tidak perlu menginstal modul dan semua

LANGKAH 1: Buka Anda dari buka halaman editnya (ATAU periksa formulir Anda).

LANGKAH 2: jika bentuk simpulnya temukan " simpul-bentuk " di elemen periksa

Menemukan id formulirperiksa Anda di elemen formulir .

LANGKAH 3: lihat gambar terlampir, teks hijau yang disorot adalah ID formulir

LANGKAH 4: PENTING Akhirnya jika Anda ingin menggunakannya dalam hook_form_alter()mengganti tanda hubung dengan garis bawah

Sebagai contoh: yourform_id_with_content_type_name_form

Seperti bijaksana Anda dapat menemukan id dari segala bentuk di drupal yang harus Anda lakukan adalah memeriksa-> menemukan elemen formulir dan mencari atribut ID dan menggunakannya

Semoga bermanfaat :)

DEVARAJ JOHNSON
sumber
1
Ini tidak berfungsi untuk saya ketika saya ingin melindungi formulir komentar di situs Drupal 8. Saya menemukan solusi dalam komentar ini di drupal.org , di mana dikatakan: 1) Temukan elemen input tersembunyi yang nameatributnya memiliki nilai "form_id". 2) Lihatlah valueatribut elemen input - nilai atribut adalah ID bentuk yang diinginkan. Contoh: Formulir komentar pada simpul cerita memiliki ID bentuk "comment_comment_node_story_form". Jika suka, Anda dapat memasukkan informasi baru ini dalam jawaban Anda.
herzbube
10

Jika formulir web Anda berada di "www.mydomain.com/node/351" maka ID formulir Anda akan "webform_client_form_351". Jadi, apa pun nid Anda - itulah ID formulir Anda.

JasmineM
sumber
2
Pertanyaannya bukan tentang modul Webform. Ini tentang bentuk edit simpul.
kiamlaluno
Pertanyaannya adalah tentang bentuk edit simpul tetapi jika Anda ingin menemukan ID formulir bentuk web ini berfungsi dengan benar.
herci
Jawaban ini benar, baru mengujinya.
vicenteherrera
6

Jika Anda tahu di mana kode itu menentukan bentuk yang ingin Anda ubah, lihat di sana. Form id hanyalah nama fungsi yang mendefinisikan form itu.

Sebagai contoh, Views mendefinisikan fungsi views_ui_edit_view_form pada baris 875 view / include / admin.inc. Filter Hierarchical Select views mencari id formulir itu di baris 50 dari hierarchical_select / modules / hs_taxonomy_views.module dalam fungsi hood_form_alter.

David L.
sumber
4

Gunakan drupal_set_message()fungsi untuk menampilkan id formulir.

function hook_form_alter(&$form, $form_state, $form_id) {
drupal_set_message($form_id);
// other codes
}
Utsav Sinha
sumber
4

Gunakan modul Dapatkan Formulir ID untuk dengan mudah menemukan id formulir dari segala bentuk di Drupal.

Berikut ini kutipan dari halaman proyeknya:

Dengan mengarahkan kursor ke formulir apa pun, Anda akan melihat tautan kontekstual tersedia. Dengan memperluas tautan, Anda akan melihat ID formulir. Klik tautan dan Anda akan melihat jendela modal dengan id formulir yang dapat disalin dan hook_form_FORM_ID_alter () saran kait.

Modul ini sudah usang. Itu ditingkatkan, diperluas dan diganti nama menjadi Devel form debug ; gunakan saja.

Pengungkapan: Saya pengelola modul-modul ini.

Tim
sumber
3

Karena kode yang Anda laporkan sedang mencari bentuk ID dari bentuk simpul, ada dua kasus.

Drupal 6

Jika kode mencoba mengubah bentuk yang digunakan untuk mengatur pengaturan untuk tipe konten, maka harus menggunakan pernyataan-IF berikut.

if ($form_id == 'node_type_form' && isset($form['identity']['type'])) { /* … */ }

Jika kode berusaha mengubah bentuk edit simpul, maka kode tersebut harus menggunakan pernyataan-IF berikut.

if (isset($form['type']) && isset($form['#node']) && $form['type']['#value'] . '_node_form' == $form_id) { /* … */ }

Drupal 7 dan lebih tinggi

Dalam kasus pertama, pernyataan IF harus yang berikut:

if ($form_id == 'node_type_form') { /* … */ }

Dengan menggunakan pendekatan yang berbeda, seandainya mymodule adalah nama pendek modul Anda, Anda dapat menggunakannya mymodule_form_node_type_form_alter(&$form, &$form_state, $form_id). Sejak Drupal 7, semua kait yang digunakan untuk mengubah formulir yang diterapkan oleh modul lain menjadi $form_idparameter terakhir. Lihat hook_form_alter () , hook_form_FORM_ID_alter () , hook_form_BASE_FORM_ID_alter () .

Dalam kasus kedua, pernyataan IF adalah sama digunakan untuk Drupal 6.

if (isset($form['type']) && isset($form['#node']) && $form['type']['#value'] . '_node_form' == $form_id) { /* … */ }
kiamlaluno
sumber
1

Pertama instal modul Devel. Lalu buat modul seperti kode di bawah ini

function hook_form_alter(&$form, &$form_state, $form_id) {
  dpm($form);
}

Kemudian Anda dapat melihat SEMUA detail formulir, seperti ID formulir, nama bidang formulir, dll.

sokratis
sumber