【问题标题】:Clearing form input upon failed form validation in Drupal 7在 Drupal 7 中表单验证失败时清除表单输入
【发布时间】:2011-06-12 20:33:37
【问题描述】:

由于表单验证失败,我无法清除表单输入。

例如,如果表单中有任何单选按钮元素,其中有两个组,未选中,表单验证功能将引发错误。如果用户选择了第一组,但没有选择第二组,则会引发错误。我想知道如何清除表单输入,以便清除第 1 组中先前选择的单选按钮。

这是通过 Drupal 7 完成的。

【问题讨论】:

  • 我相信这里已经回答了这个问题:stackoverflow.com/questions/9235164/…
  • 这是一个不同的问题 - 在另一个问题中,表单正在通过验证并进入提交功能。这个问题是关于如何从 hook_validate 更改表单数据,以便不调用提交函数...

标签: drupal drupal-fapi drupal-forms


【解决方案1】:

您需要添加一个验证函数来清理 form_state...

function my_module_form_FORM_ID_alter(&$form, &$form_state, $form_id) {
  $form['#validate'][] = 'my_module_clear_values_validate';
}

function my_module_clear_values_validate($form, &$form_state) {
  if ($form_state['submitted']) {
    $form_state['values']['field_my_field'][LANGUAGE_NONE][0]['value'] = 'WHATEVS';
  }
}

【讨论】:

  • 其实是卡尔。这是标准的东西,我在许多网站上都使用它来管理表单处理。我猜你在测试之前没有清除缓存,或者没有费心输出表单来找出你需要清空的字段。您可能希望通过 Devel 使用 dsm($form) 来检查表单。
  • 确认 Carl 的评论 - 这不起作用。您的解决方案可以更改输入值(更改为“WHATEVS”),但不能清除该值。
猜你喜欢
  • 2013-09-29
  • 1970-01-01
  • 2021-07-03
  • 2014-11-17
  • 2012-01-06
  • 1970-01-01
  • 1970-01-01
  • 2017-11-23
  • 1970-01-01
相关资源
最近更新 更多