搜索

首页  >  问答  >  正文

不允许用PATCH方法访问角色路由。只支持GET、HEAD和POST方法

<p>我想使用spatie laravel来创建角色和权限。由于错误,我无法编辑我的角色:</p> <blockquote> <p>不支持PATCH方法的roles路由。支持的方法有:GET、HEAD、POST。</p> </blockquote> <p><strong>控制器:</strong></p> <pre class="brush:php;toolbar:false;">public function edit(string $id) { $role = Role::find($id); $permission = Permission::get(); $rolePermissions = DB::table("role_has_permissions")->where("role_has_permissions.role_id",$id) ->pluck('role_has_permissions.permission_id','role_has_permissions.permission_id') ->all(); return view('roles.edit',compact('role','permission','rolePermissions')); } public function update(Request $request, string $id) { $this->validate($request, [ 'name' => 'required', 'permission' => 'required', ]); $role = Role::find($id); $role->name = $request->input('name'); $role->save(); $role->syncPermissions($request->input('permission')); return redirect()->route('roles.index') ->with('success','角色更新成功'); }</pre> <p><strong>Blade模板:</strong></p> <pre class="brush:php;toolbar:false;"><form action='{{ url('roles/') }}' method='post'> @csrf @method('PUT') <div class="my-3 p-3 bg-body rounded shadow-sm"> <a href='{{ url('roles') }}' class="btn btn-secondary">返回</a> {!! Form::model($role, ['method' => 'PATCH','route' => ['roles.update', $role->id]]) !!} <div class="mb-3 row"> <label for="permission" class="col-sm-2 col-form-label">权限</label> <div class="col-sm-10"> {{-- <input type="text" class="form-control" name='permission' value="{{ $role->permission }}" id="permission"> --}} {!! Form::text('name', null, array('placeholder' => '名称','class' => 'form-control')) !!} </div> </div></前> <p><strong>路由:</strong></p>
Route::group(['middleware' => ['auth']], function() {
    路线::资源('admin', adminController::class);
    路线::资源('produk', produkController::class);
    路线::资源('角色', roleController::class);
});</pre>
<p><br />></p>
P粉986028039P粉986028039468 天前605

全部回复(1)我来回复

  • P粉245276769

    P粉2452767692023-08-16 15:10:16

    在编辑视图中的HTML表单中添加@method('PUT')指令。通常情况下,PUT方法用于在RESTful API中更新资源,Laravel会自动将其视为PATCH请求。

    <form action="{{ route('roles.update', $role->id) }}" method="POST">
        @method('PUT')
        @csrf
        <div class="my-3 p-3 bg-body rounded shadow-sm">
            <a href="{{ route('roles.index') }}" class="btn btn-secondary">返回</a>
            <div class="mb-3 row">
                <label for="permission" class="col-sm-2 col-form-label">权限</label>
                <div class="col-sm-10">
                    {!! Form::text('permission', null, array('placeholder' => '权限名称', 'class' => 'form-control')) !!}
                </div>
            </div>
        </div>
        <button type="submit">更新角色</button>
    </form>

    回复
    0
  • 取消回复