【问题标题】:How to show a field after validateForm() is called in Drupal 8?如何在 Drupal 8 中调用 validateForm() 后显示字段?
【发布时间】:2018-07-03 18:18:09
【问题描述】:

hook_form_FORM_ID_alter() 函数中,我根据 Drupal 8 中的以下代码检查或未选中另一个复选框字段来显示或隐藏一个字段。

$form['field_my_url']['#states'] = [
  'visible' => [
    ':input[name="field_my_checkbox[value]"]' => ['checked' => TRUE],
  ],
];

如果用户选中 field_my_checkbox 复选框,在 field_my_url 中输入无效 URL 并决定取消选中 field_my_checkbox 复选框,则 field_my_url 将被隐藏,并且保留无效 URL。它将失败验证,因为输入的 URL 无效。

然后用户将被重定向回来并显示错误消息。但是因为field_my_checkbox 复选框没有被选中,field_my_url 字段将与错误消息一起隐藏,用户看不到。

在这种情况下,如果 field_my_url 字段由于在 Drupal 8 中包含无效 URL 而未能通过验证,我该如何显示它?

【问题讨论】:

    标签: php drupal field state show-hide


    【解决方案1】:

    我找到了解决办法。可能效率不高。但它现在解决了这个问题,因为目前没有人提出任何解决方案。如果验证失败。我只是从现场取消设置'#states'。通过这样做,将不会应用可见的#states,并且 field_my_url 将正常显示。

    unsert($form['field_my_url']['#states']);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-31
      • 1970-01-01
      • 1970-01-01
      • 2020-06-12
      • 2021-02-23
      • 1970-01-01
      相关资源
      最近更新 更多