Как создать 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'] или чем угодно.


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