0

我的页面上有一些来自数据库的输出数据(在 mytheme_page_preprocess 函数中对 db 的查询很少),我想做搜索表单(文本字段和提交按钮)。那么,如何在预处理函数中获取表单提交的值?

类似于$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);
}
4

2 回答 2

0

如果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().

于 2016-03-02T16:28:53.303 回答
-1

既然它是一个搜索表单,如何让它使用 GET 并在你的预处理函数中从 $_GET 数组中获取值呢?无论如何,通常建议将 GET 用于搜索表单,因此结果是可收藏和可共享的。

像这样:https ://api.drupal.org/api/drupal/developer%21topics%21forms_api_reference.html/7#method

于 2013-04-15T17:06:49.870 回答