【问题标题】:Laravel: what is the best practice to show errors in a modal when save a form? [closed]Laravel:保存表单时在模式中显示错误的最佳实践是什么? [关闭]
【发布时间】:2020-06-10 11:59:13
【问题描述】:

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

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

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

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

【问题讨论】:

  • 在出现错误时为他打开模式。

标签: laravel validation request modal-dialog


【解决方案1】:

我过去处理这个问题的一种方法是将一些在加载时执行的 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

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

如果您有许多字段正在验证并且检查每个字段不是一个现实的选择,我建议使用 FormRequestmanually creating the validator 并使用 after 挂钩添加您可能用作标志的错误:

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

【讨论】:

  • 好的,但是如何在自定义错误中添加字段“模态字段”?
  • 如果您使用 Laravel 的内置验证,错误将出现在 $errors 变量中。如果不是,只需使用与在模态中显示错误相同的检查即可。没有看到更多代码,我无法提供更多帮助。
  • 我使用默认的 Laravel 验证,所以我在我的控制器中使用这个作为示例:$this->validate($request, ['title_in_modal', 'required']。这将返回一个 ViewErrorBag 模型。如何获得“模态字段”作为返回值
  • 使用你的字段 - title_in_modal like @error('title_in_modal')
  • 啊,我明白了,但是我的表格很长,有 50 个字段,那么这不是一个好的解决方案...
猜你喜欢
  • 2020-03-08
  • 1970-01-01
  • 2010-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-07
相关资源
最近更新 更多