web-gelistirme-sc.com

Bir formun form kimliğini nasıl bulabilirim?

Formumun form kimliğini nasıl edinebilirim? Modüllerimi yapmaya yeni başladım ve duruyorum. Bu kodu başkasından 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';
  }
}
23
enchance

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

Formun bulunduğu sayfayı ziyaret ettiğinizde, değişkenler (ve ad) görüntülenir.

Bilgiye erişmenin (veya daha doğrusu görüntülemenin) daha kolay bir yolu Devel modülü tarafından sağlanan dpm () işlevini kullanmak olacaktır. Bunu print_r ile aynı şekilde kullanabilirsiniz.

17
Bart

Modülü kurmadan FORM Kimliği bulma

Form Kimliğini bulmak çok kolaydırmodülleri yüklemeye gerek yoktur ve hepsi

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

2. ADIM: denetleme öğesinde bir düğüm form bul "düğüm-form"

Finding the form id form öğesinde olduğunuzu kontrol edin.

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

4. ADIM: ÖNEMLİ Son olarak hook_form_alter() içinde kullanmak istiyorsanız hypen yerine alt çizgi yazın

Örneğin: yourform_id_with_content_type_name_form

Bilge gibi drupal içinde herhangi bir formun kimliğini bulabilirsiniz, tek yapmanız gereken incelemek-> form öğesini bulmak ve kimlik özelliğini aramak ve kullanmak

Umarım yardımcı olur :)

37
DEVARAJ JOHNSON

Web formunuz "www.alanadim.com/node/351" adresinde bulunuyorsa form kimliğiniz "webform_client_form_351" olur. Yani, nid'iniz ne olursa olsun - bu sizin form kimliğinizdir.

11
JasmineM

Değiştirmek istediğiniz formu tanımlayan kodun nerede olduğunu biliyorsanız, oraya bakın. Form kimliği, yalnızca bu formu tanımlayan işlevin adıdır.

Örneğin Views, views/include/admin.inc dosyasının 875 satırındaki views_ui_edit_view_form işlevini tanımlar. Hiyerarşik Seçim görünümleri filtresi, hood_form_alter işlevindeki hierarchical_select/modules/hs_taxonomy_views.module'ün 50. satırındaki bu form kimliğini arar.

6
David L

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

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

Drupal'daki herhangi bir formun form kimliğini kolayca bulmak için Form ID Al modülünü kullanın.

İşte proje sayfasından 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, kopyalanabilir form kimliğine ve hook_form_FORM_ID_alter () kanca önerisine sahip kalıcı bir pencere göreceksiniz.

Bu modül kullanımdan kaldırıldı. Geliştirildi, genişletildi ve Devel form debug ; bunun yerine kullanın.

Açıklama: Bu modüllerin bakımcısıyım.

4
Tim

Bildirdiğiniz kod, düğüm formunun form kimliğini aradığından, 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 deyimini 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-deyimini kullanmalıdır.

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

Drupal 7 ve üstü

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

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

Farklı bir yaklaşım kullanarak, mymodule'un modülünüzün kısa adı olduğunu varsayalım, mymodule_form_node_type_form_alter(&$form, &$form_state, $form_id) kullanabilirsiniz. Drupal 7 olduğundan, başka bir modül tarafından uygulanan formu değiştirmek için kullanılan tüm kancalar son parametre olarak $form_id 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) { /* … */ }
3
kiamlaluno

Önce Devel module yükleyin. 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.

1
sokratis