Bir formun form kimliğini nasıl bulabilirim?


22

Formumun form kimliğini nasıl alabilirim? Modüllerimi yeni oluşturmaya başladım ve duruyorum. Bu kodu başka birinden aldım ve özelleştirmeye çalışıyorum:

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';
  }
}


Lütfen yukarıdaki soruya verilen cevaplara bakın, ayrıca sorunuzu da cevaplamalıdır
Laxman13

1
Buradaki soru oldukça farklı; bir form öğesinin nasıl tanımlanacağını sormuyor, ancak uygulamasında kontrol edilmesi gereken form kimliği hook_form_alter(). Rapor edilen kod da göz önüne alındığında, bu sorunun farklı olduğunu söyleyebilirim.
kiamlaluno

Yanıtlar:


17

Form değişkenlerini PHP işlevi print_r ile yazdırmayı deneyin .

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

Sayfayı ziyaret ettiğinizde form açık olduğunda değişkenler (ve ad) görüntülenir.

Bilgiye erişmenin (veya görmenin yerine) daha kolay bir yolu Devel modülü tarafından sağlanan dpm () işlevini kullanıyor olabilir . Print_r ile aynı şekilde kullanabilirsiniz.


1
Raporlanan kod göz önüne alındığında, $formdeğişkenin içeriğini görmeye gerek yoktur .
kiamlaluno

10
Ayrıca $ form_id doğrudan yazdırabilirsiniz bir param olduğunu !!
niksmac

1
Eğer varsa Devel sadece etkindpm($form_id);
Hayır Sssweat

35

Modül kurmadan FORM ID bulma

Form kimliğini bulmak çok kolaydır ve modüller kurmaya gerek yoktur.

1. ADIM: Sizi düzenleme sayfasına gidin (VEYA formunuzu inceleyin).

2. ADIM: eğer bir düğüm formu kontrol elemanında " düğüm formu " bulursa

Form kimliğini bulmaForm öğesinde olup olmadığınızı kontrol edin .

ADIM 3: Ekteki resme bakın, vurgulanan yeşil metin, formun kimliğidir.

ADIM 4: ÖNEMLİ Son olarak , altı çizili hipenhook_form_alter() yerine kullanmak istiyorsanız

Örneğin: yourform_id_with_content_type_name_form

Akıllıca olduğu gibi herhangi bir formun kimliğini drupal'da bulabilirsin, yapmanız gereken tek şey incelemek-> form öğesini bulmak ve ID özelliğini aramak ve kullanmaktır.

Umarım yardımcı olur :)


1
Drupal 8 sitesindeki yorum formunu korumak istediğimde bu benim için işe yaramadı. Drupal.org'daki bu yorumda bir çözüm buldum , şöyle yazıyor: 1) nameÖzniteliği "form_id" değerine sahip gizli bir giriş öğesi bulun . 2) Girdi öğesinin valueniteliğine bakın - niteliğin değeri istenen biçim kimliğidir. Örnek: Hikaye düğümlerindeki yorum formu "comment_comment_node_story_form" form kimliğine sahiptir. İsterseniz bu yeni bilgiyi cevabınıza dahil edebilirsiniz.
herzbube

10

Web formunuz "www.mydomain.com/node/351" adresindeyse, form kimliğiniz "webform_client_form_351" olacaktır. Yani, nidiniz ne olursa olsun - bu sizin kimliğinizdir.


2
Soru Webform modülü ile ilgili değil. Düğüm düzenleme formu hakkında.
kiamlaluno

Soru, düğüm düzenleme formuyla ilgili, ancak herhangi bir web formu form kimliğini bulmak istiyorsanız bu doğru çalışır.
herci

Bu cevap doğru, sadece test ettim.
vicenteherrera 14:15

6

Kodun nerede olduğunu değiştirmek istiyorsanız, değiştirmek istediğiniz formu tanımlarsanız, oraya bakın. Form kimliği, yalnızca bu formu tanımlayan fonksiyonun adıdır.

Örneğin, Views, views_ui_edit_view_form işlevini views / 875 satırının 875 satırında tanımlar. Hiyerarşik Seçim görünümleri filtresi, bu kimliğe hood_form_alter işlevinde hiyerarşik_select / module / hs_taxonomy_views.module satırının 50. satırında bakar.


4

drupal_set_message()Form kimliğini görüntülemek için işlevi kullanın .

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

4

Kullan al Formu kimliği kolayca Drupal herhangi formun form id öğrenmek için modül.

Proje sayfasından bununla ilgili bir alıntı:

Herhangi bir formun üzerine geldiğinizde bağlamsal bir bağlantı göreceksiniz. Bağlantıyı genişleterek form kimliğini göreceksiniz. Bağlantıya tıkladığınızda, doldurulabilir form kimliği ve hook_form_FORM_ID_alter () kanca önerisi içeren bir kalıcı pencere göreceksiniz.

Bu modül kullanımdan kaldırıldı. Devel form hata ayıklaması olarak geliştirildi, genişletildi ve yeniden markalandı ; bunun yerine kullanın.

Açıklama: Bu modüllerin sahibiyim.


3

Bildirdiğiniz kod, düğüm formunun form kimliğini ararken, iki durum vardır.

Drupal 6

Kod, bir içerik türü için ayarları ayarlamak için kullanılan formu değiştirmeye çalışıyorsa, aşağıdaki IF ifadesini kullanmalıdır.

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

Kod, düğüm düzenleme formunu değiştirmeye çalışıyorsa, kod aşağıdaki IF ifadesini kullanmalıdır.

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

Drupal 7 ve daha üstü

İlk durumda, IF ifadesi aşağıdaki olmalıdır:

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

Farklı bir yaklaşım kullanarak, modülümün modülünüzün kısa adı olduğunu varsayalım mymodule_form_node_type_form_alter(&$form, &$form_state, $form_id). Drupal 7'den beri, başka bir modül tarafından uygulanan formu değiştirmek için kullanılan tüm kancalar $form_idson parametre olarak alır . Bakınız hook_form_alter () , hook_form_FORM_ID_alter () , hook_form_BASE_FORM_ID_alter () .

İkinci durumda, IF ifadesi Drupal 6 için kullanılanla aynıdır.

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

1

İlk önce Devel modülünü kurun. Sonra aşağıdaki kod gibi bir modül oluşturun.

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

Ardından, form kimliği, formun alan adları vb. Gibi bir formun TÜM ayrıntılarını görebilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.