gpt4 book ai didi

forms - Drupal 表单 :want to show previous form value as default_value on page

转载 作者:行者123 更新时间:2023-12-04 10:22:23 25 4
gpt4 key购买 nike

我的目标是用户是否使用“产品名称”值为“YYY”提交此表单。提交页面应重新加载,但这次“产品名称”应显示先前的默认值,如本例中的“YYY”。

这是我的代码...

function addnewproduct_page () {
return drupal_get_form('addnewproduct_form',&$form_state);
}

function addnewproduct_form(&$form_state) {
$form = array();


$formproductname['productname'] = array (
'#type' => 'textfield',
'#title' => t('Product Name'),
'#required' => TRUE,
'#size' => '20',
);

if (isset($form_state['values']['productname']))
{
$form['productname']['#default_value'] = $form_state['values']['productname'];
}

//a "submit" button
$form['submit'] = array (
'#type' => 'submit',
'#value' => t('Add new Product'),
);
return $form;
}

最佳答案

您可以在提交处理程序中使用 $form_state['storage'] 来存储步骤之间的值。所以添加一个提交函数,如下所示:

function addnewproduct_form_submit ($form, &$form_state) {
// Store values
$form_state['storage']['addnewproduct_productname'] = $form_state['values']['productname'];
// Rebuild the form
$form_state['rebuild'] = TRUE;
}

那么您的表单构建器功能将变为:
function addnewproduct_form(&$form_state) { 

$form = array();

$form['productname'] = array (
'#type' => 'textfield',
'#title' => t('Product Name'),
'#required' => TRUE,
'#size' => '20',

);

if (isset($form_state['storage']['addnewproduct_productname'])) {
$form['productname']['#default_value'] = $form_state['storage']['addnewproduct_productname'];
}

return $form;
}

请记住,只要您的 $form_state['storage'] 被填满,您的表单就会一直生成。因此,当准备将值保存到数据库等时,您需要调整提交处理程序和 unset($form_state['storage'])。

如果您的表单更像是一个过滤器,即。用于显示而不是存储信息,那么您只需
function addnewproduct_form_submit ($form, &$form_state) {
// Rebuild the form
$form_state['rebuild'] = TRUE;
}

当表单重建时,它将可以访问上一次迭代中的 $form_state['values']。

关于forms - Drupal 表单 :want to show previous form value as default_value on page,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1077806/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com