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.