Як створити GET-форму


10

Наприклад, форма фільтра в областях адміністратора найкраще може бути формами GET, таким чином вони можуть бути відміченими для закладки і можуть підтримувати фільтри на сторінках пейджера.

Як можна найкраще використовувати form_api для таких форм? Чи будуть подані _валіdate гачки? Чи можна опустити гачок _submit?

Наприклад, фільтри, відкриті для перегляду, працюють таким чином; Але код у представленнях, що обробляють це, є складним і складним, занадто складним, щоб використовуватись як хороший приклад для розробки користувацьких інтерфейсів з простими формами фільтру.


Я не розумію питання. Ви можете створити або підключити будь-яку форму для отримання GET-даних, якщо ви це маєте на увазі.
Летаріон

Я оновив питання із посиланням на зразок.
беркес

Відповіді:


11

Використовуйте параметр #method такої форми:

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

Звичайно. Це одна частина. А як щодо перевірки, подання гачків тощо. Чи є набір?
беркес

2
Метод форми повинен бути встановлений для публікації, оскільки функції передачі та перевірки повинні бути викликані неявно.
Лестер Пібоді

Пов’язано: form_dataключі, always_processа methodтакож можна встановити у визначенні форми, що призводить до запуску валідації + гачки процесу. Але я не можу знайти приклад використання для цього, і я все-таки закінчую form_stateвмістом methodключа, встановленого на post!
artfulrobot

4

На всякий випадок, коли хтось натрапить на це питання, це більш повний реальний, але дуже простий приклад :)

ви хочете визначити форму

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

і тоді ви можете використовувати його

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

Останній рядок може бути блоком ['content'] або тим, що вам потрібно.


Для пошукових форм ви можете також поставити $form_state['redirect'] = false;в обробник подання, щоб відключити перенаправлення після надсилання форми.
Алі Ганджі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.