Jak utworzyć formularz GET

10

Na przykład formularz filtru w obszarach administracyjnych może najlepiej być formularzami GET, w ten sposób można je dodawać do zakładek i można utrzymywać filtry na stronach stronicowania.

Jak najlepiej używać form_api do takich formularzy? Czy zostaną przesłane haczyki _validate? Czy można pominąć hak _submit?

Na przykład filtry działające w widokach działają w ten sposób; Ale kod w widokach obsługujących to jest skomplikowany i skomplikowany, zbyt skomplikowany, aby można go było wykorzystać jako dobry przykład przy tworzeniu niestandardowych interfejsów za pomocą prostych formularzy filtrów.

berkes
źródło
Nie rozumiem pytania. Możesz utworzyć lub przechwycić dowolny formularz, aby pobrać dane GET, jeśli o to ci chodzi.
Letharion
Zaktualizowałem pytanie w odniesieniu do przykładu.
berkes

Odpowiedzi:

11

Użyj parametru #method formularza w następujący sposób:

<?php
  $form['#method'] = 'get';
?>
Alexandru Badiu
źródło
Pewnie. To jest jedna część. Ale co z walidacją, przesyłaniem haków i tak dalej. Są ustawione?
berkes
2
Metoda formularza musi być ustawiona na wysyłanie, aby jej przesłanie i sprawdzenie funkcji mogły być wywoływane niejawnie.
Lester Peabody
Powiązane: form_dataklucze always_processi methodmożna je również ustawić w definicji formularza, co powoduje uruchomienie sprawdzania poprawności + przechwytywania procesu. Ale nie mogę znaleźć przykładu użycia do tego i nadal mam form_statew methodzestawie klucz ustawiony na post!
artfulrobot
4

Na wypadek, gdyby ktoś natknął się na to pytanie, jest to bardziej kompletny, ale bardzo prosty przykład z życia :)

będziesz chciał zdefiniować formularz

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

i wtedy możesz go użyć

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

Ostatnim wierszem może być np. Blok [„treść”] lub cokolwiek potrzebujesz.

mojzi
źródło
W przypadku formularzy wyszukiwania możesz również wprowadzić $form_state['redirect'] = false;moduł obsługi przesyłania, aby wyłączyć przekierowywanie po przesłaniu formularza.
Ali Gangji,