Md *_*min 5 laravel yajra-datatable
当我提交更新某些数据的请求时,收到此错误“此路由不支持 GET 方法。支持的方法:PUT。”。如何摆脱这个?
这里我添加了 web.php、AdminController.php 和 JS 函数的代码来填充数据表。
路线:
Route::group(['prefix' => '/admins'], function () {
    Route::get('/show', [
        'uses' => 'AdminController@show',
        'as'   => 'admins.show',
    ]);
    Route::put('/approve/{id}',     [
        'uses' => 'AdminController@approve',
        'as'   => 'admins.approve',
    ]);
});
管理员控制器:
public function show()
{
    return Datatables::of(User::query()->whereNotNull('email_verified_at'))->make(true);
}
public function approve(Request $request, $id)
{
    $user = User::find($id);
    $user->approved_by = Auth::user()->name;
    $user->approved_at = new \DateTime();
    $user->save();
    return redirect('/admins/show');
} 
数据表功能:
$(function () {
    $('#admins').DataTable({
        processing: true,
        serverSide: true,
        autoWidth: true,
        scrollX: true,
        order: [[1, "asc"]],
        pagingType: "full_numbers",
        ajax: '{{ url('admins/ show') }}',
        columns: [
            { data: 'id', name: 'id' },
            { data: 'name', name: 'name' },
            { data: 'email', name: 'email' },
            { data: 'email_verified_at', name: 'email_verified_at' },
            { data: 'approved_by', name: 'approved_by' }
        ],
        columnDefs: [
            {
                targets: 0,
                visible: false,
                searchable: false
            },
            {
                targets: 5,
                render: function (data, type, row, meta) {
                    if (row.approved_by === null) {
                        return "<form action=\"/admins/approve/" + row.id + "\" method=\"put\"><input type=\"submit\" class=\"btn btn-success\" value=\"Approve\"></form><button type=\"button\" class=\"btn btn-danger\">Delete</button>";
                    } else {
                        return "<button type=\"button\" class=\"btn btn-primary\">Reject</button><button type=\"button\" class=\"btn btn-danger\">Delete</button>";
                    }
                },
                className: "col-action",
                searchable: false,
                orderable: false
            }
        ]
    });
});
Web 服务器通常不支持像PUT这样的 HTTP 动词,Laravel 使用方法欺骗来实现这一点,因此您需要传递一个输入 type=hidden 来指定您要使用的方法。出于同样的原因,您的表单操作需要“POST”。
 return "<form action=\"/admins/approve/" + row.id + "\" method=\"POST\">
               <input type=\"hidden\" name=\"_method\" value=\"PUT\">"
另请确保您通过 POST 请求传递csrf-token 。
<input type=\"hidden\" name=\"_token\" value=\"{{ csrf_token() }}\">"
| 归档时间: | 
 | 
| 查看次数: | 8186 次 | 
| 最近记录: |