Laravel通过重定向错误将控制符传递回控制器

时间:2017-03-31 11:43:12

标签: php laravel laravel-5 laravel-5.3

如果在更新失败并且错误被触发时,如何将$ id从控制器传回到同一视图。

我有一个视图,它打印数据库中的所有项目,并为每个触发模态弹出窗口的项目添加编辑按钮。

@for ($i =0; $i < count($inventory); $i++)

                     <tr>

                       <td> {{ $inventory[$i]->name }} </td>
                        <td>
                        <button type="button" class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal{{ $inventory[$i]->id }}">
                          Edit
                        </button>

编辑完所有数据后,将通过表格

传递给路线
<form action="/updateInventory/{{$inventory[$i]->id}}" method="post">

然后它进入我的控制器,它验证输入,然后将输入插入数据库。

public function update(Request $req,$id)

{
    $this->validate($req, [
        'name'=> 'min:2'
        ]);
    $inventory = inventory::find($id);
    $inventory->name = $req->input('name');
    $response = $inventory->save();


    if($response)
    {
        return redirect()->back()->with(['message'=>'gerai']);
    }


    return redirect()->back()->withErrors(['error'=>'negerai']);
    //return redirect('/inventory');

}

但是如果输入没有通过验证,我就会打印错误。

@include ('partials.notice')

                    @if($errors->any())

                    <script>
                        $(function() {
                            $('#myModal{{$id}}').modal('show');
                        });
                        </script>
                    @endif

如何将我刚从控制器编辑的元素的$ id传递回同一个视图,这样当@if($ errors-&gt; any())触发时我可以弹出我的模态$('#myModal {{$ id }} ')的模态(' 显示“);我希望编辑元素。

1 个答案:

答案 0 :(得分:0)

在Laravel中,您可以将数据闪存到会话中。在您的示例中,您可以执行类似的操作:

$request->session()->flash('idOfError', $id);

您可以通过以下方式访问它:

               @if($errors->any())

                <script>
                    $(function() {
                        $('#myModal{{session()->get("idOfError")}}').modal('show');
                    });
                    </script>
                @endif

您可以看到更多here