Drupal 7,表格不会重建

Posted

技术标签:

【中文标题】Drupal 7,表格不会重建【英文标题】:Drupal 7, form won't get rebuilt 【发布时间】:2012-01-26 02:21:16 【问题描述】:

我正在构建一个多步骤表单,我不希望用户在意外刷新页面时丢失任何存储的信息。重现步骤:

1) Press 'ok'-button
2) var_dump($form_state['multistep']['step']) == 2
3) Refresh page
4) var_dump($form_state['multistep']['step']) still == 2
5) Press 'ok'-button
6) var_dump($form_state['multistep']['step']) == 3
7) Refresh page
8) var_dump($form_state['multistep']['step']) == 2 rather than 3

这里一定有一些我不知道的 Drupal 表单机制问题。谁能解释为什么会这样?下面的示例代码。

function multistep_test_form($form, &$form_state) 
    if( !isset($form_state['multistep']['step']) ) 
        $form_state['multistep']['step'] = 1;
     else 
        var_dump($form_state['multistep']['step']);
    

    $form['submit'] = array(
        '#type' => 'submit',
        '#value' => 'ok'
    );

    return $form;


function multistep_test_form_submit($form, &$form_state) 
    $form_state['rebuild'] = TRUE;
    $form_state['multistep']['step']++;

【问题讨论】:

【参考方案1】:

值存储在 $form_state['page_values'] 中。

$form_state['page_values'][1] = $form_state['values'];

查看 API 文档中的示例模块以获取更详细的示例。

Example Form

Example Form submit handler to carry values

Validate values(如果需要)

【讨论】:

以上是关于Drupal 7,表格不会重建的主要内容,如果未能解决你的问题,请参考以下文章

自定义模板中的Drupal 7自定义表单

具有默认值上下文过滤器的 Drupal 7 视图块不会在页面上过滤(Mongo)

Drupal 7将变量传递给同一视图

将数据表集成到 Drupal 7

Drupal 7 视图暴露的过滤器

如何在登录表单上的drupal 7中设置占位符