Laravel:保存表单时在模式中显示错误的最佳做法是什么?

Laravel: what is the best practice to show errors in a modal when save a form?

在我的 Laravel 应用程序(Bootstrap 4、jQuery 和 Axios)中,我有一个包含多个表单的页面。有些表格是模态的,但不是所有表格。

<form method="post">
<div class="modal">
// show errors
// form fields
</div>
</form>

我不会使用 ajax 来 post 填写此表格。当 post 一个表单而同一页面上有许多其他表单时,在模式中显示错误的最佳做法是什么?

现在的问题是:当用户 post 表单出现字段错误时,Laravel 将用户重定向回页面,并关闭模式。当用户打开模态时,他会看到模态中的错误。 防止这种情况的最佳做法是什么?

我过去处理这个问题的一种方法是将一些在加载时执行的 JS 包装在一些 PHP 条件中。

例如:

@if($errors->has('field-in-modal'))
$('#my-modal').modal('show');
@endif

在 laravel > 5.8.13:

@error('field-in-modal')
$('#my-modal').modal('show');
@enderror

然后当你被错误重定向回来时,你可以立即打开你的模式。

如果您有许多字段需要验证并且检查每个字段不是一个现实的选择,我建议使用 FormRequest or manually creating the validator 并使用 after hook 添加一个错误,您可以将其用作标志:

$validator->after(function ($validator) {
    if ($validator->fails()) {
        $validator->errors()->add('show-modal', 'use as a flag to show modal on pageload');
    }
});