Come posso trovare l'ID modulo di un modulo?


22

Come posso ottenere l'ID modulo del mio modulo? Ho appena iniziato a creare i miei moduli e sono a un punto morto. Ho ricevuto questo codice da qualcun altro e sto provando a personalizzarlo:

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


si prega di vedere le risposte alla domanda sopra, dovrebbe anche rispondere alla tua domanda
Laxman13

1
La domanda qui è abbastanza diversa; non sta chiedendo come identificare un elemento del modulo, ma qual è l'ID del modulo che dovrebbe essere verificato nell'implementazione di hook_form_alter(). Dato anche il codice riportato, direi che questa domanda è diversa.
kiamlaluno

Risposte:


17

Prova a stampare le variabili del modulo con la funzione PHP print_r .

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

Quando visiti la pagina in cui si trova il modulo, verranno visualizzate le variabili (e il nome).

Un modo più semplice per accedere (o meglio visualizzare) alle informazioni sarebbe usare la funzione dpm () fornita dal modulo Devel . Puoi usarlo nello stesso modo in cui utilizzeresti print_r.


1
Dato il codice riportato, non è necessario visualizzare il contenuto della $formvariabile.
kiamlaluno

10
Anche $ form_id è un parametro che puoi stampare direttamente !!
niksmac,

1
Se hai sviluppato Develop , solodpm($form_id);
No Sssweat

35

Trovare l'ID FORM senza installare il modulo

Trovare l'ID modulo è molto semplice, non è necessario installare i moduli e tutto il resto

PASSO 1: Apri da vai alla sua pagina di modifica (O controlla il tuo modulo).

PASSAGGIO 2: se si tratta di una forma nodo, trovare " forma nodo " nell'elemento inspect

Individuazione dell'ID modulocontrolla di essere nell'elemento del modulo .

PASSAGGIO 3: vedi immagine allegata il testo verde evidenziato è l'ID del modulo

PASSAGGIO 4: IMPORTANTE Infine, se si desidera utilizzarlo per hook_form_alter()sostituire l' ipen con trattino basso

Per esempio: yourform_id_with_content_type_name_form

Come saggio puoi trovare id di qualsiasi forma in drupal tutto ciò che devi fare è ispezionare-> trova l'elemento del modulo e cerca l'attributo ID e usalo

Spero che sia d'aiuto :)


1
Questo non ha funzionato per me quando volevo proteggere il modulo di commento in un sito Drupal 8. Ho trovato una soluzione in questo commento su drupal.org , dove dice: 1) Trova un elemento di input nascosto il cui nameattributo ha valore "form_id". 2) Guarda l' valueattributo dell'elemento di input - il valore dell'attributo è l'ID modulo desiderato. Esempio: il modulo di commento sui nodi della storia ha l'ID modulo "comment_comment_node_story_form". Se lo desideri, puoi incorporare queste nuove informazioni nella tua risposta.
Herzbube,

10

Se il tuo modulo web si trova su "www.mydomain.com/node/351", il tuo ID modulo sarà "webform_client_form_351". Quindi, qualunque sia il tuo nid, questo è il tuo ID modulo.


2
La domanda non riguarda il modulo Webform. Riguarda il modulo di modifica del nodo.
kiamlaluno

La domanda riguarda il modulo di modifica del nodo, ma se si desidera trovare un ID modulo webform funziona correttamente.
herci,

Questa risposta è giusta, appena testata.
Vicenteherrera,

6

Se sai dove si trova il codice che definisce il modulo che desideri modificare, guarda lì. L'id del modulo è solo il nome della funzione che definisce quel modulo.

Ad esempio, Views definisce la funzione views_ui_edit_view_form sulla riga 875 di views / Includes / admin.inc. Il filtro Viste viste gerarchiche cerca quell'ID modulo sulla riga 50 di hierarchical_select / modules / hs_taxonomy_views.module in una funzione hood_form_alter.


4

Utilizzare la drupal_set_message()funzione per visualizzare l'id modulo.

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

4

Usa il modulo Ottieni ID modulo per scoprire facilmente l'id modulo di qualsiasi modulo in Drupal.

Ecco una citazione al riguardo dalla sua pagina del progetto:

Passando il mouse su qualsiasi modulo, visualizzerai un collegamento contestuale disponibile. Espandendo il collegamento vedrai l'ID del modulo. Fare clic sul collegamento e verrà visualizzata una finestra modale con ID modulo copiabile e suggerimento hook hook_form_FORM_ID_alter ().

Questo modulo è obsoleto. È stato migliorato, ampliato e rinominato come debug del modulo Develop ; usalo invece.

Divulgazione: sono il manutentore di questi moduli.


3

Poiché il codice che hai segnalato cerca l'ID modulo del modulo nodo, ci sono due casi.

Drupal 6

Se il codice sta tentando di modificare il modulo utilizzato per impostare le impostazioni per un tipo di contenuto, dovrebbe utilizzare la seguente istruzione IF.

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

Se il codice sta tentando di modificare il modulo di modifica del nodo, il codice dovrebbe utilizzare la seguente istruzione IF.

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

Drupal 7 e versioni successive

Nel primo caso, l'istruzione IF dovrebbe essere la seguente:

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

Utilizzando un approccio diverso, supponendo che mymodule sia il nome breve del modulo, è possibile utilizzare mymodule_form_node_type_form_alter(&$form, &$form_state, $form_id). Da Drupal 7, tutti gli hook utilizzati per alterare il modulo implementato da un altro modulo diventano $form_idl'ultimo parametro. Vedi hook_form_alter () , hook_form_FORM_ID_alter () , hook_form_BASE_FORM_ID_alter () .

Nel secondo caso, l'istruzione IF è la stessa usata per Drupal 6.

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

1

Prima installa il modulo Devel. Quindi crea un modulo come il codice qui sotto

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

Quindi puoi visualizzare TUTTI i dettagli di un modulo, come ID modulo, nomi dei campi di un modulo ecc.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.