Cara membuat formulir GET

10

Misalnya formulir filter pada area admin yang terbaik adalah formulir GET, dengan cara itu dapat bookmark dan dapat dipertahankan di seluruh halaman halaman.

Bagaimana cara terbaik menggunakan form_api untuk formulir seperti itu? Apakah kait _validate dikirimkan? Bisakah kait _submit dihilangkan?

Misalnya filter yang terpapar tampilan bekerja dengan cara ini; Tetapi kode dalam menangani penanganan ini berbelit-belit dan kompleks, terlalu rumit untuk digunakan sebagai contoh yang baik ketika mengembangkan antarmuka khusus dengan bentuk filter sederhana.

berkes
sumber
Saya tidak mengerti pertanyaannya. Anda dapat membuat atau mengaitkan formulir apa pun untuk mengambil data GET, jika itu yang Anda maksud.
Letharion
Saya telah memperbarui pertanyaan dengan referensi ke sebuah contoh.
berkelanjutan

Jawaban:

11

Gunakan parameter #method dari formulir seperti ini:

<?php
  $form['#method'] = 'get';
?>
Alexandru Badiu
sumber
Tentu. Itu adalah satu bagian. Tapi bagaimana dengan validasi, kirim kail, dan sebagainya. Apakah set?
Berkel
2
Metode formulir harus diatur agar dikirim untuk itu mengirimkan dan memvalidasi fungsi yang dipanggil secara implisit.
Lester Peabody
Terkait: form_datakunci always_processdan methodjuga dapat diatur dalam definisi bentuk yang menghasilkan valid + proses kait sedang dijalankan. Tapi saya tidak dapat menemukan contoh penggunaan untuk ini dan saya masih berakhir dengan form_stateberisi methodset kunci post!
artfulrobot
4

Kalau-kalau ada yang tersandung pada pertanyaan ini, ini adalah kehidupan nyata yang lebih lengkap, namun sangat sederhana :)

Anda akan ingin menentukan formulir

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

dan kemudian Anda bisa menggunakannya

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

Baris terakhir bisa berupa blok ['konten'] atau apa pun yang Anda butuhkan.

mojzis
sumber
Untuk formulir pencarian, Anda mungkin ingin juga memasukkan $form_state['redirect'] = false;pengatur pengiriman untuk menonaktifkan pengalihan setelah formulir dikirimkan.
Ali Gangji