要实现“表单不会提交到数据库,但页面重新加载时不显示错误”,可以使用Laravel 7的表单验证功能。
首先,确保在控制器中导入表单验证的命名空间:
use Illuminate\Support\Facades\Validator;
然后,在控制器的方法中使用Validator来验证表单数据。如果验证失败,将错误信息存储在Session中,并重定向回表单页面:
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
// 在这里定义表单字段的验证规则
]);
if ($validator->fails()) {
return redirect()->back()->withErrors($validator)->withInput();
}
// 如果验证通过,执行保存到数据库的代码
}
在上面的代码中,$request->all()
获取了所有的表单数据,并将其传递给Validator的make方法进行验证。在make方法的第二个参数中,你可以定义每个表单字段的验证规则。
如果验证失败,将错误信息存储在Session中并使用withErrors($validator)
方法传递给重定向的页面。此外,withInput()
方法可以将表单数据传递回表单页面,以便在重新加载时填充原始的表单值。
最后,如果验证通过,可以执行保存到数据库的代码。
在表单页面中,你可以使用$errors
变量来显示错误信息。例如:
@if ($errors->any())
@foreach ($errors->all() as $error)
- {{ $error }}
@endforeach
@endif
上面的代码将在页面顶部显示错误信息,如果有任何错误被传递到视图的话。
通过以上的步骤,你可以实现“表单不会提交到数据库,但页面重新加载时不显示错误”的功能。