Come creare un modulo GET


10

Ad esempio, un modulo di filtro nelle aree di amministrazione può essere il migliore per ottenere moduli, in questo modo sono segnalibro e possono essere gestiti su pagine di pager.

Come si può utilizzare al meglio form_api per tali moduli? Verranno inviati gli hook _validate? L'hook _submit può essere omesso?

Ad esempio i filtri esposti alle viste funzionano in questo modo; Ma il codice nelle viste che gestisce questo è complicato e complesso, troppo complesso per essere usato come un buon esempio per lo sviluppo di interfacce personalizzate con semplici moduli di filtro.


Non capisco la domanda. È possibile creare o hook_alter qualsiasi modulo per acquisire dati GET, se è questo che intendi.
Letharion,

Ho aggiornato la domanda con un riferimento a un esempio.
Berkes,

Risposte:


11

Utilizzare il parametro #method del modulo in questo modo:

<?php
  $form['#method'] = 'get';
?>

Sicuro. Questa è una parte. Ma per quanto riguarda la convalida, inviare hook e così via. Sono il set?
Berkes,

2
Il metodo di un modulo deve essere impostato per la pubblicazione affinché le funzioni di invio e convalida siano chiamate in modo implicito.
Lester Peabody,

Correlato: form_datachiavi always_processe methodpuò anche essere impostato nella definizione del modulo che risulta nell'esecuzione di hook validate + process. Ma non riesco a trovare un esempio di utilizzo per questo e finisco comunque con il form_statecontenere una methodchiave impostata su post!
artfulrobot

4

Nel caso in cui qualcuno si imbattesse in questa domanda, questo è un esempio più completo nella vita reale, ma molto semplice :)

vorrai definire il modulo

function YOURMODULE_search_form($form, &$form_state) {
  $form['#method'] = 'get';
  $form['#action'] = '/search';
  $form['#attributes'] = array('class' => array('mymod-search'));
  $form['search'] = array(
    '#type' => 'textfield',
    '#size' => 20,
  );
  return $form;
}

e poi puoi usarlo

$searchform = drupal_get_form('YOURMODULE_search_form');
$output .= drupal_render($searchform);

L'ultima riga potrebbe essere un blocco ['contenuto'] o qualunque cosa tu abbia bisogno.


Per i moduli di ricerca, potresti anche voler inserire $form_state['redirect'] = false;il gestore di invio per disabilitare il reindirizzamento dopo l'invio del modulo.
Ali Gangji,
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.