如何确保在多页表单中始终将用户路由到他们所属的步骤


How to ensure users are always routed to the step they belong on in a multi-page form

我正在使用Laravel 5构建一系列必须按顺序填写的表单(或步骤(。我想确保用户在每次页面加载时总是被引导到正确的"步骤"。

示例#1

我有一份工作申请,分为5个部分,每个部分部分是它自己的页面/表单。用户来到我的网站并填写注销第1页和第2页,但随后注销。那周晚些时候他们回来了并登录。我希望它们自动定向到应用

我的计划是将状态(它们属于哪个页面(存储在数据库中,然后在决定将用户路由到哪里时引用它。我只是不确定实现这一点的"Laravel方式"是什么。我应该把这个检查放在哪里,以确保用户属于页面?

示例#2

相同的5页求职申请,用户填写了第1页和第2页。我们使用非常基本的URI,用户假设目前在site.com/formpage/2上,他可能会去site.com/formpage/4跳过。当用户这样做时,网站识别用户"属于"第3页,并将其路由到那里。

假设您将有一条用于该场景的路线,例如

  • /form/1
  • /form/2
  • /form/3

基本上是/form/{step}

因此,负责此请求的控制器应该是验证用户是否正确的控制器。如果您正在保存状态(用户应该重定向到的步骤(,您可以比较请求中的$step变量是否与您存储的变量匹配。如果没有,只需重定向到合适的。

伪代码:

public function foo($step)
{
    // get the step stored in the database, I'll just hard-code it
    $stepFromDatabase = 3;
    if ($stepFromDatabase != $step) {
        return redirect("/form/{$stepFromDatabase}");
    }
    // otherwise step is okay, so just display the form
    return view('bar');
}

希望能有所帮助。