php - 在 Drupal 7 中获取提交的帖子值

标签 php forms drupal post drupal-7

我在使用 Drupal 7 提交表单后访问发布的值时遇到问题。

假设我有一个简单的表单,其中包含一个文本字段和一个提交按钮。

function sample_form($form, &$form_state){
  $form['sample']['name'] = array(
  '#description' => 'Name',
  '#value' => 'Name',
  '#type' => 'textfield',
  );
 $form['sample']['sample_submit'] = array(
   '#type' => 'submit',
   '#value' => 'SUBMIT',
   '#submit' => array('sample_form_submit')
 );
}

然后是我的提交处理程序,用于显示用户在文本字段中输入的值。

function sample_form_submit($form, &$form_state){
  drupal_set_message($form_state['values']['name']);
}

但是,消息始终包含文本字段的默认值,在本例中为“名称”。如果我输入“Mike”并点击提交,消息会显示“name”(默认值)。

如何获取提交的值?我知道我可以访问

$form_state['input']['name']

但我的理解是上面给出了原始的、未经处理的 $_POST 数据。

我需要用户输入的值,如何获取?我真的不清楚使用 drupal 表单 API 获取用户提交数据的过程。

感谢您的帮助!

最佳答案

这是因为您在文本字段中使用 #value 而不是 #default_value。使用前者将始终覆盖用户提供的值。您只需要将代码更改为:

function sample_form($form, &$form_state){
  $form['sample']['name'] = array(
    '#description' => 'Name',
    '#default_value' => 'Name', // <-- Change made here
    '#type' => 'textfield',
  );

  $form['sample']['sample_submit'] = array(
    '#type' => 'submit',
    '#value' => 'SUBMIT',
    '#submit' => array('sample_form_submit')
  );
}

这仅适用于实际接受输入值的元素。例如,#value 仍然是用于隐藏输入、提交按钮等的正确键。选择列表、复选框等也需要使用 #default_value 或您'永远不会得到用户提交的数据。

查看 Drupal FAPI供您在未看过时引用。

关于php - 在 Drupal 7 中获取提交的帖子值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7970511/

相关文章:

javascript - 如何重新加载当前页面而不丢失 javascript 中的任何数据 它在 chrome 上工作,但在 safari 中无法工作

php - MYSQL 和 PHP INSERT NULL 值

forms - 如何更改 TextField 值而不必先删除它(Flutter)

javascript - 单击时多次调用 Ready 函数

php - 如何将列记录与表头相关联?

javascript - 在 iframe 内的隐藏提交按钮上使用 click() 在 FF 和 Chrome 中有效,但在 IE 和 Opera 中无效

css - 仅使用 CSS 隐藏表单下拉选项

drupal - 如何使用多个过滤器来扩大 Apachesolr 查询中的搜索范围

svn - Drupal 开发/阶段/生产设置

php - 替换 woocommerce 标题