Как получить отправленные значения формы в функции page_preprocess в drupal 7

У меня есть некоторые выходные данные из базы данных на моей странице (несколько запросов к БД в функции mytheme_page_preprocess), и я хочу сделать форму поиска (текстовое поле и кнопка отправки). Итак, как я могу получить отправленные значения формы в функции preprocess?

Что-то вроде $form_state['values'] в myform_form_submit ($ form, $ form_state), но в функции предварительной обработки.

Моя простая форма поиска

function reestr_form($form, &$form_state) 
{
    $form = array();
    $form['q'] = array(
                       '#type' => 'textfield',
                       '#size' => 30,
                       '#default_value' => t(''),
                      );
    $form['submit'] = array(
                            '#type' => 'submit',
                            //'#value' => 'send',
                            '#name' => 'op',
                            '#src' => base_path() . path_to_theme() . '/images/search-button.png',
                            '#submit' => array('reestr_form_submit')
                            );
    //$form['#submit'][] = 'reestr_search_submit';
    return $form;
}

function reestr_form_submit($form, &$form_values) 
{
    $message = 'You have submitted the ' . $form_id . ' form which contains the following data:<pre>' . print_r($form_values, true) . '</pre>';
    var_dump($message);
}

2 ответа

Решение

Если template_process_HOOK является частью вашей формы, вы должны иметь доступ к вашей организации в $variables['form']['#entity'],

/**
 * Implements template_process_HOOK().
 */ 
function mymodule_preprocess_myhook(&$variables) {
  $entity = $variables['form']['#entity'];
  $field_name = $variables['form']['#field_name'];
  $info = field_info_field($field_name);
  $instance = field_info_instance($entity->entityType(), $field_name, $entity->type);
}

В качестве альтернативы используйте кеш ctools (ctools_object_cache_set() / ctools_object_cache_get()) или загрузить форму из кеша через form_get_cache(),

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

Как это: https://api.drupal.org/api/drupal/developer%21topics%21forms_api_reference.html/7

Другие вопросы по тегам