【问题标题】:Missing required parameters for [Route: admin.destroy] on Laravel form actionLaravel 表单操作中缺少 [Route: admin.destroy] 所需的参数
【发布时间】:2020-02-27 18:40:47
【问题描述】:

我有这个错误:

缺少 [Route: admin.destroy] [URI: admin/{admin}] 的必需参数

这是所有的视图,所有的变量, 我尝试了很多,但我不知道如果我改变第二个参数 $info 有什么问题 出现此错误 此路由不支持 DELETE 方法。支持的方法:GET、HEAD、POST。

    <div class="table-responsive">
        <table class=" table ">
            <thead class="thead-dark">
                <tr>
                    <th scope="col">#</th>
                    <th scope="col">Name</th>
                    <th scope="col">Code</th>

                    <th scope="col">Phone</th>
                    <th scope="col">Phone 2</th>
                    <th scope="col">Delete</th>
                    {{-- <th scope="col">email</th> --}}
                </tr>
            </thead>
            <tbody>
                @foreach ($infos as $info)
                <tr>
                    <td>{{ $info->id }}</td>
                    <td>{{ $info->name}}</td>
                    <td>{{ $info->code }}</td>
                    <td>{{ $info->phone }}</td>
                    <td>{{ $info->phone2 }}</td>
                    <td>
                        <button class="btn btn-danger btn-sm" onclick="handleDelete ({{ $info->id }})">Delete
                        </button>
                    </td>
                    {{-- <td>{{ $info->email }}</td> --}}
                </tr>

                @endforeach
            </tbody>
        </table>
    </div>

    <form action="{{ route('admin.destroy',['admin' => $info])}}" method="post" id="deleteInfoForm">
        @method('DELETE')
        @csrf
        <div class="modal fade" id="deleteModal" tabindex="-1" role="dialog" aria-labelledby="deleteModal"
            aria-hidden="true">
            <div class="modal-dialog" role="document">
                <div class="modal-content">
                    <div class="modal-header">
                        <h5 class="modal-title" id="deleteModal">Delete Info</h5>
                        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                            <span aria-hidden="true">&times;</span>
                        </button>
                    </div>
                    <div class="modal-body">
                        <p class=" text-center text-bold">Are your sure ?</p>

                    </div>
                    <div class="modal-footer ">
                        <button type="button" class="btn btn-secondary" data-dismiss="modal">No , Go back</button>
                        <button type="submit" class="btn btn-danger">Yes , Delete</button>
                    </div>
                </div>
            </div>
        </div>
    </form>

这是我从 AdminController 中删除的功能

public function destroy(Info $admin)
    {
        // $info = Info::find($id);

        $admin->delete();

        // session()->flash('succuss', 'Info deleted successfully');
        return redirect('/admin');
    }

我的路由列表

| DELETE    | admin/{admin}          | admin.destroy    | App\Http\Controllers\AdminController@destroy  

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    路由期望参数2是用于路由模型绑定的id的模型

    将其添加到表单中的操作

    <form action="{{ route('admin.destroy', ['admin' => $info]) }}"
    

    更新

    表单在foreach 循环之外,因此$info 未定义

    改为在 foreach 中传递表单

    <div class="table-responsive">
        <table class=" table ">
            <thead class="thead-dark">
                <tr>
                    <th scope="col">#</th>
                    <th scope="col">Name</th>
                    <th scope="col">Code</th>
    
                    <th scope="col">Phone</th>
                    <th scope="col">Phone 2</th>
                    <th scope="col">Delete</th>
                    {{-- <th scope="col">email</th> --}}
                </tr>
            </thead>
            <tbody>
                @foreach ($infos as $info)
                <tr>
                    <td>{{ $info->id }}</td>
                    <td>{{ $info->name}}</td>
                    <td>{{ $info->code }}</td>
                    <td>{{ $info->phone }}</td>
                    <td>{{ $info->phone2 }}</td>
                    <td>
                        <button class="btn btn-danger btn-sm" onclick="handleDelete ({{ $info->id }})">Delete
                        </button>
                    </td>
                    {{-- <td>{{ $info->email }}</td> --}}
                </tr>
                <tr>
                    <form action="{{ route('admin.destroy',['admin' => $info])}}" method="post" id="deleteInfoForm">
                        @method('DELETE')
                        @csrf
                        <div class="modal fade" id="deleteModal" tabindex="-1" role="dialog" aria-labelledby="deleteModal"
                            aria-hidden="true">
                            <div class="modal-dialog" role="document">
                                <div class="modal-content">
                                    <div class="modal-header">
                                        <h5 class="modal-title" id="deleteModal">Delete Info</h5>
                                        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                                            <span aria-hidden="true">&times;</span>
                                        </button>
                                    </div>
                                    <div class="modal-body">
                                        <p class=" text-center text-bold">Are your sure ?</p>
    
                                    </div>
                                    <div class="modal-footer ">
                                        <button type="button" class="btn btn-secondary" data-dismiss="modal">No , Go
                                            back</button>
                                        <button type="submit" class="btn btn-danger">Yes , Delete</button>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </form>
                </tr>
                @endforeach
            </tbody>
        </table>
    </div>
    

    希望对你有帮助

    【讨论】:

    • 未定义变量:管理员!
    • 试试$info,我们不知道你的变量叫什么,把你所有的观点贴出来让我们知道
    • 我添加了所有视图
    • “我添加了所有视图”是什么意思?返回刀片视图的控制器逻辑在哪里?你能告诉我们吗? @Hesham
    • 公共函数索引() { $all = Info::latest()->get();返回视图('info.admin')->with('infos', $all); }
    【解决方案2】:

    您在打开表单时缺少要删除的数据:

    <form action="{{ route('admin.destroy', ['admin'=>$admin])}}" method="post" id="deleteInfoForm">
    

    在您这样做之前,您必须将 $admin 变量传递给该视图,以便使用它。

    【讨论】:

    • 未定义变量:admin
    【解决方案3】:

    您收到该错误是因为您的路由期望获得一个管理变量 (admin/{admin}),但是当您在 {{ route('admin.destroy')}} 中调用 route 时它不存在。您应该将其作为route 方法的第二个参数以键控数组格式提供。

    【讨论】:

    • 未定义变量:admin
    • 要在您的视图中访问名为$admin 的变量,您必须在调用view 方法时首先将其传递给您的视图
    • 我添加了所有视图
    • 如果您设置在该模板上,那么选项是更改您的路由,而不是将 admin 作为路由参数,而是将其用作常见请求参数
    • 我按照莎莉的回答,我没有任何错误,但它也没有删除!
    猜你喜欢
    • 1970-01-01
    • 2021-11-03
    • 2021-08-17
    • 2020-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-15
    相关资源
    最近更新 更多