不允许用PATCH方法访问角色路由。只支持GET、HEAD和POST方法
P粉986028039
P粉986028039 2023-08-15 19:45:00
[PHP讨论组]
<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")-&gt;where("role_has_permissions.role_id",$id) -&gt;pluck('role_has_permissions.permission_id','role_has_permissions.permission_id') -&gt;all(); return view('roles.edit',compact('role','permission','rolePermissions')); } public function update(Request $request, string $id) { $this-&gt;validate($request, [ 'name' =&gt; 'required', 'permission' =&gt; 'required', ]); $role = Role::find($id); $role-&gt;name = $request-&gt;input('name'); $role-&gt;save(); $role-&gt;syncPermissions($request-&gt;input('permission')); return redirect()-&gt;route('roles.index') -&gt;with('success','角色更新成功'); }</pre> <p><strong>Blade模板:</strong></p> <pre class="brush:php;toolbar:false;">&lt;form action='{{ url('roles/') }}' method='post'&gt; @csrf @method('PUT') &lt;div class="my-3 p-3 bg-body rounded shadow-sm"&gt; &lt;a href='{{ url('roles') }}' class="btn btn-secondary"&gt;返回&lt;/a&gt; {!! Form::model($role, ['method' =&gt; 'PATCH','route' =&gt; ['roles.update', $role-&gt;id]]) !!} &lt;div class="mb-3 row"&gt; &lt;label for="permission" class="col-sm-2 col-form-label"&gt;权限&lt;/label&gt; &lt;div class="col-sm-10"&gt; {{-- &lt;input type="text" class="form-control" name='permission' value="{{ $role-&gt;permission }}" id="permission"&gt; --}} {!! Form::text('name', null, array('placeholder' =&gt; '名称','class' =&gt; 'form-control')) !!} &lt;/div&gt; &lt;/div&gt;</pre> <p><strong>路由:</strong></p> <pre class="brush:php;toolbar:false;">Route::group(['middleware' =&gt; ['auth']], function() { Route::resource('admin', adminController::class); Route::resource('produk', produkController::class); Route::resource('roles', roleController::class); });</pre> <p><br /></p>
P粉986028039
P粉986028039

全部回复(1)
P粉245276769

在编辑视图中的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>
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号