【问题标题】:Laravel Error Message in view directive @error appears for other update form视图指令@error 中的 Laravel 错误消息出现在其他更新表单中
【发布时间】:2020-01-02 21:28:33
【问题描述】:

我是 Laravel 的新手,我的问题是错误消息仍然以其他模式形式显示,我的 crud 是一个表格,每行(每个寄存器)都有编辑按钮。

我正在使用 $errors,我有一个带有表单的模式,如果我试图以不正确的方式更新它(缺少输入等),它确实会显示错误消息,我使用会话变量重新显示这些错误为了重新打开模式(查询)并显示错误。

但是如果我不重新提交它实际上会更新寄存器,并且我单击按钮以查看另一个更新模式表单(对于不同的寄存器),则会出现错误,尽管我试图忘记事件控制器函数中的会话变量(我用作在 html 中显示错误的条件的变量)

控制器

public function show($id)
{
    session()->forget('errorUpdateTicket');
    $ticket = Ticket::findOrFail($id);

    return $ticket->toJson();
}

public function update(Request $request, $id)
{
    $validator = Validator::make($request->all(), $this->rules, $this->message);
    if ($validator->fails()) {
        return redirect('incidents')
            ->with('errorUpdateTicket', 'errorUpdateTicket')
            ->withErrors($validator)
            ->withInput();
    }
}

查看错误信息

@if(session('errorUpdateTicket'))
    @error('category_id')
    <span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
    @enderror
@endif

主要问题是我想关闭模式并打开另一个寄存器进行更新,它不应该出现这些错误,我知道问题是 $errors 和 session ('errorUpdateTicket') 仍然有旧值,但我不知道我可以通过哪种方式删除它们,我猜是在显示寄存器数据的函数中,但它对我不起作用。

【问题讨论】:

    标签: laravel modal-dialog session-variables laravel-blade


    【解决方案1】:

    你试过$request-&gt;session()-&gt;flash('errorUpdateTicket', 'errorUpdateTicket');

    【讨论】:

    • 它会保留错误,因为闪存会保留会话变量,直到完成新请求。我只是在做另一个获取请求,它在其他模式中显示错误(我使用按钮显示的模式)。
    • 我确实以我不喜欢的方式解决了它。在 jquery 中,当我单击按钮时,我删除了所有 input 和 select 的 'is-invalid' 类(在 laravel 视图中用于显示:$errors 消息的类)。代码:$('#modal-update-ticket input').removeClass('is-invalid'); $('#modal-update-ticket select').removeClass('is-invalid');).
    • 对不起,我再次提出问题。我认为唯一的问题是您对每个按钮都使用相同的模式。如果您希望消息消失,您必须使用 js 更改该模式的内容。您的方式实际上是正确的,但这不是 laravel 问题。
    猜你喜欢
    • 2020-10-04
    • 1970-01-01
    • 2016-08-31
    • 1970-01-01
    • 2020-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-31
    相关资源
    最近更新 更多