我在使用 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/