在Laravel 5.1中,在验证失败时填充动态HTML元素。

4
在我的表单中,我使用Ajax填充州和城市下拉框。同时,在同一表单中,用户可以通过点击“添加更多”按钮来添加多个员工。
在上述两种情况下,HTML DOM元素是使用jQuery生成的。
如果表单提交时验证失败,我需要重新构建动态生成的元素。
请问有人能告诉我实现上述问题的正确方法吗?
谢谢。

在提交表单之前,您应该使用Jquery验证所有可能的情况。这样,在提交后就不会出现任何问题。 - Yash
我已经在做了,我还在寻找服务器端验证。 - Neelkanth Kaushik
如果您要进行服务器端验证,则必须在前端进行额外的工作。 - Yash
嗨Yash,你知不知道有没有可以在Laravel中处理JS的软件包?像JS助手之类的东西。 - Neelkanth Kaushik
如果你搜索的话,会得到很多选项。点击这个链接查看验证相关内容。 - Yash
谢谢。我一定会查看您提供的链接。 - Neelkanth Kaushik
2个回答

5
假设您通过调用JavaScript函数动态生成了一组输入,可能类似于:
//JS
function generate(){
  $("#container-abc").append("<input name=name[]>");
}

<!--HTML -->
<input name=name[] />
<input name=name[] />

提交表单,如果有验证错误,您将使用以下方式返回值:

//in your blade
$name = Request::old('name');
@if(count($name) > 0)
  for (var i = 1; i <= {{count($name)}}; i++) {
    generate();
  }
@endif

这似乎是一个可行的解决方案。谢谢。 - Neelkanth Kaushik

0

你可以使用

return Redirect::back()->withInput();

或者访问https://laravel.com/docs/5.2/requests#old-input以获取更多信息。

旧输入
Laravel 允许您在下一个请求期间保留来自上一个请求的输入。此功能对于在检测到验证错误后重新填充表单特别有用。但是,如果您使用 Laravel 的包含的验证服务,则不太可能需要手动使用这些方法,因为 Laravel 的一些内置验证工具将自动调用它们。将输入闪存到会话中
Illuminate\Http\Request 实例上的 flash 方法将当前输入闪存到会话中,以便在用户下一次请求应用程序时可用: $request->flash();
您还可以使用 flashOnly 和 flashExcept 方法将请求数据的子集闪存到会话中: $request->flashOnly(['username', 'email']); $request->flashExcept('password');
将输入闪存到会话中然后重定向
由于您经常希望将输入与重定向到上一页相关联,因此您可以使用 withInput 方法轻松地将输入闪存到重定向上:
return redirect('form')->withInput();
return redirect('form')->withInput($request->except('password'));
检索旧数据
要从上一个请求中检索闪存的输入,请在 Request 实例上使用 old 方法。old 方法提供了一个方便的助手,用于从会话中提取闪存的输入数据: $username = $request->old('username');
Laravel 还提供了一个全局的 old 助手函数。如果您在 Blade 模板中显示旧输入,则使用 old 助手更方便。如果给定字符串不存在旧输入,则返回 null:

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接