Drupal表单:希望在页面上显示以前的表单值作为default_value [英] Drupal Form:want to show previous form value as default_value on page

查看:81
本文介绍了Drupal表单:希望在页面上显示以前的表单值作为default_value的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的目标是,如果用户将表单的产品名称值提交为YYY。在提交页面上应该重新加载,但这次产品名称应该显示以前的默认值,就像这种情况YYY。

My Goal is if user is submitting this form with "Product Name" value as "YYY". On submit page should reload but this time "Product Name" should show previous valye as default as in this case "YYY".

这是我的代码...



Here is my code...

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 [ '存储']在你的提交处理程序中保存步骤间的值。所以添加一个这样的提交函数:

You can use $form_state['storage'] in your submit handler to hoard values between steps. So add a submit function like so:

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;    
}

然后,您的表单构建器功能将成为:

Then your form builder function would become:

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 [ '存储']填充。所以你可以调整你的提交处理程序,并且可以在$ data_state ['storage']中取消设置,以便将值保存到数据库等。

Just remember that your form will keep being generated as long as your $form_state['storage'] is stuffed. So you will need to adjust your submit handler and unset($form_state['storage']) when are ready to save values to the database etc.

如果你的表单是更像一个过滤器用于显示而不是存储信息,那么您可以通过

If your form is more like a filter ie. used for displaying rather than storing info, then you can get away with just

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

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

When the form rebuilds it will have access to $form_state['values'] from the previous iteration.

这篇关于Drupal表单:希望在页面上显示以前的表单值作为default_value的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆