【问题标题】:Drupal FAPI: How do I change a value in the validation function?Drupal FAPI:如何更改验证函数中的值?
【发布时间】:2015-11-24 13:22:42
【问题描述】:

在下面的代码中,我尝试将基础表单更新为新值,但该值似乎没有正确更新。

function msul_tgif_xml_basic_search_form_validate($form, &$form_state) {

  //$Offset is computed properly as verified by dpm.

  $form_state['complete form']['SearchOptions']['Offset']['#value'] = $Offset;
}

function msul_tgif_xml_basic_search_form_submit($form, &$form_state) {
  $form_state['rebuild'] = TRUE;
}

当我返回msul_tgif_xml_basic_search_form 时,$formstate['values']['Offset'] 正确显示了新的计算值,但是当我使用新值重新创建表单时,它没有正确更新。 msul_tgif_xml_basic_search_form 函数的相关部分是:

      $form['SearchOptions']['Offset'] => [
                    '#type' => 'textfield',
                    '#title' => t('Start with result:'),
                    '#required' => FALSE,
                    '#default_value' => 
                         isset($form_state['values']['Offset']) ?
                         $form_state['values']['Offset'] : 1,
                    '#size' => 6,
                    '#description' => t('blah'),
                    '#element_validate' => [
                              'element_validate_integer_positive'
                    ],
              ];

正如我所说,重新生成的表单仍然包含用户最后输入的任何内容,并且不会根据代码告诉它的内容进行更新。关于我做错了什么的任何想法......我花了大约 25 个小时试图让它发挥作用。

上面的我都试过了,form_set_value()我也试过了。

【问题讨论】:

    标签: drupal drupal-7 drupal-fapi


    【解决方案1】:

    我觉得这不是正确的答案,它看起来像是一个杂物,但它确实有效,我更改了 $form_state['input']['Offset'] 的值并且有效。希望这对其他人也有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-10
      • 1970-01-01
      • 1970-01-01
      • 2015-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多