GET formu nasıl oluşturulur?


10

Örneğin, yönetici alanlarındaki bir filtre formu en iyi GET formları olabilir, bu şekilde yer imlerine eklenebilir ve filtreler sayfalar arasında korunabilir.

Bu formlar için form_api'yi en iyi nasıl kullanabilirsiniz? _Validate kancaları gönderilecek mi? _Submit kancası atlanabilir mi?

Örneğin, görünümlere maruz kalan filtreler bu şekilde çalışır; Ancak, bunu ele alan görünümlerdeki kod, basit filtre formlarıyla özel arayüzler geliştirirken iyi bir örnek olarak kullanılmak için kıvrık ve karmaşık, çok karmaşıktır.


Soruyu anlamıyorum. Demek istediğiniz buysa, GET verilerini almak için herhangi bir form oluşturabilir veya hook_alter yapabilirsiniz.
Letharion

Soruyu bir inceleme referansıyla güncelledim.
Berkes

Yanıtlar:


11

Formun #method parametresini şu şekilde kullanın:

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

Elbette. Bu bir bölüm. Ancak doğrulama, kanca gönderme, vb. Set var mı?
Berkes

2
Bir formun yöntemi, gönderilmesi için gönderilecek şekilde ayarlanmalı ve işlevlerin örtülü olarak çağrılması doğrulanmalıdır.
Lester Peabody

İlgili: form_datatuşları always_processve methodayrıca, doğrulama + işlem kancalarının çalışmasına neden olan form tanımında da ayarlanabilir. Ama bunun için bir örnek bulamıyorum ve hala form_statebir methodanahtar seti içeriyor post!
artfulrobot

4

Herkesin bu soruya tökezlemesi durumunda, bu daha eksiksiz bir gerçek hayat, ama çok basit bir örnek :)

formu tanımlamak isteyeceksiniz

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

ve sonra kullanabilirsiniz

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

Son satır bir blok ['içerik'] veya ihtiyacınız olan her şey olabilir.


Arama formları için, $form_state['redirect'] = false;form gönderildikten sonra yeniden yönlendirmeyi devre dışı bırakmak için gönderme işleyicisini de koymak isteyebilirsiniz .
Ali Gangji
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.