📜  laravel 错误后填充表单 - PHP (1)

📅  最后修改于: 2023-12-03 15:32:36.793000             🧑  作者: Mango

Laravel 错误后填充表单

在使用 Laravel 开发 Web 应用时,通常需要填充表单元素以便用户修改或者查看已有数据。由于数据来源复杂,表单填充很可能会受到错误的影响。在本文中,我们将讨论如何在 Laravel 中解决这个问题。

问题描述

在表单填充时,我们通常会使用 Laravel 的表单辅助函数 old() 来填充以前提交的数据:

<input type="text" name="username" value="{{ old('username') }}">

然而,如果服务器端发生了错误,所有提交的数据都将被重定向并传递到错误视图中,此时使用 old() 函数可能会受到影响。特别是当表单数据很大时,除了错误输入之外,我们还需要考虑其他变量和数据。此时,我们需要重新构建表单填充数据,以便重新渲染表单元素。

解决方案

Laravel 提供了 withErrors() 函数可以将错误信息绑定到请求实例中。在视图中,我们使用 errors() 函数来获取包含错误信息的实例。这样,我们可以在重新填充表单元素之前使用 old() 函数来获取提交的数据,然后使用错误信息填充表单元素。

一般来说,我们使用循环语句来遍历所有的表单输入标签,然后进行错误数据填充:

// 假设我们定义了 $errors 变量与 $data 变量
// $errors 存储了所有的错误信息
// $data 存储了所有的表单数据

@foreach ($inputs as $name => $label)
  <label>{{ $label }}</label>
  <input type="text" name="{{ $name }}" value="{{ old($name, $data[$name] ?? '') }}">
  @if ($errors->has($name))
    <div class="alert-danger">{{ $errors->first($name) }}</div>
  @endif
@endforeach

使用 old($name, $data[$name] ?? '') 函数来填充表单元素。如果在表单输入中指定了错误信息,将错误信息打印到标签的下面。

总结

在本文中,我们介绍了如何解决 Laravel 表单填充时的问题。使用 withErrors()errors() 函数可以将错误信息绑定到请求实例中,并获取包含错误信息的实例。使用 old() 函数可以获取提交的数据以填充表单元素。最后,我们使用循环遍历表单元素并打印错误信息。希望这篇文章对你有所启示!