【发布时间】:2023-08-22 18:04:02
【问题描述】:
我正在尝试重置表单,以便 Drupal 8 显示它尚未提交。到目前为止,我一直无法做到这一点,因为我找不到任何可用的方法(setSubmitted() 在没有 FALSE 选项的情况下将其硬编码为 TRUE)。原因是这不是一个完整的提交,而是一个字段的提交,之后我希望用户被重定向到具有另一个表单的另一个页面,并且我希望这个辅助表单使用在第一个中获得的值一步。
在第一部分的提交处理程序中,我使用它来重定向:
$form_state->setRedirect('my.route', [], []);
这可行,但是当表单到达第二个表单(似乎)时,第二个表单认为它是一个提交。结果,我添加到第二个表单的任何提交按钮似乎都会使其自动提交,这会破坏我的用户旅程。
在我尝试过的第一部分的提交中:
$form_state->setRebuild(TRUE);
$form_state = new FormState();
unset($form_state);
在各种配置中尝试上述方法均无济于事。他们都阻止/忽略了我之后进行的 setRedirect 调用。我想要/需要这样做的原因是我想保留使用的 POST 方法。
【问题讨论】:
-
@EricLavault 是的,我见过类似的东西。问题是我需要一个块类型的表单和一个页面类型的表单。尽管这正确地是一个多步骤,但我相信您分享的示例(以及我见过的其他示例)本身会刷新表单(使用相同的 URL)。对于这个用例,我需要第二部分在不同的地址进行,将数据发布到它并收集