Как создать GET-форму

10

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

Как лучше всего использовать form_api для таких форм? Будут ли отправлены хуки _validate? Можно ли пропустить хук _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'] или чем угодно.

mojzis
источник
Для форм поиска вы также можете добавить $form_state['redirect'] = false;обработчик отправки, чтобы отключить перенаправление после отправки формы.
Али Ганджи