Laravel 11 角色和权限2--编辑权限和删除权限

78 阅读1分钟

权限编辑

路由
Route::middleware('auth')->group(function () {
    .
    .
    .
    // 编辑权限页面
    Route::get('/permissions/{id}/edit', [PermissionController::class, 'edit'])->name('permissions.edit');
    // 执行编辑权限
    Route::post('/permissions/{id}', [PermissionController::class, 'update'])->name('permissions.update');
   // 删除权限
   Route::delete('/permissions', [PermissionController::class, 'destroy'])->name('permissions.destroy');

});
控制器 编辑功能

App/Http/Controllers/PermissionController.php

// 编辑权限
public function edit($id)
{
    $permission = Permission::findOrFail($id);
    return view('permissions.edit', compact('permission'));
}

// 执行编辑权限
public function update($id, Request $request)
{
    $permission = Permission::findOrFail($id);

    $validator = Validator::make($request->all(), [
        'name' => 'required|min:3|unique:permissions,name,' . $id . ',id',
    ]);

    if ($validator->passes()) {
        $permission->name = $request->name;
        $permission->save();
        return redirect()->route('permissions.index')->with('success', '权限编辑成功~~');
    } else {
        return redirect()->route('permissions.edit',$id)->withErrors($validator)->withInput();
    }
}
前端模版

resources/views/permissions/list.blade.php 添加跳转页路由

<a href="{{ route('permissions.edit',$permission->id) }}"
   class="bg-slate-700 text-sm rounded-md text-white px-3 py-2 hover:bg-slate-600">编辑</a>

resources/views/permissions/edit.blade.php

<x-app-layout>
    <x-slot name="header">
        <div class="flex justify-between">
            <h2 class="font-semibold text-xl text-gray-800 leading-tight">
                权限 / 编辑
            </h2>
            <a href="{{ route('permissions.index') }}"
               class="bg-slate-700 text-sm rounded-md text-white px-5 py-3">权限列表</a>
        </div>
    </x-slot>

    <div class="py-12">
        <div class="max-w-7xl mx-auto sm:px-6 lg:px-8">
            <div class="bg-white overflow-hidden shadow-sm sm:rounded-lg">
                <div class="p-6 text-gray-900">

                    <form action="{{ route('permissions.update',$permission->id) }}" method="post">
                        @csrf

                        <div>
                            <label for="" class="text-sm font-medium">权限名称</label>
                            <div class="my-3">
                                <input value="{{old('name',$permission->name)}}" name="name" placeholder="权限名单"
                                       type="text"
                                       class="border-gray-300 shadow-sm w-1/2 rounded-lg">

                                @error('name')
                                <p class="text-red-400 font-medium">{{ $message }}</p>
                                @enderror

                            </div>
                            <button class="bg-slate-700 hover:bg-slate-600 text-sm rounded-md text-white px-5 py-3">
                                更新
                            </button>
                        </div>
                    </form>

                </div>
            </div>
        </div>
    </div>
</x-app-layout>
控制器 删除功能

App/Http/Controllers/PermissionController.php

// 删除权限
public function destroy(Request $request)
{
    $id = $request->id;
    $permission = Permission::find($id);

    if ($permission == null) {
        session()->flash('error', '未找到权限~');
        return response()->json([
            'status' => false
        ]);
    }

    $permission->delete();
    session()->flash('success', '权限删除成功~');
    return response()->json([
        'status' => true
    ]);
}
前端模版

resources/views/layouts/app.blade.php 添加 jQuery CDN链接

   .
   .
   .
  </body>
  
    <script src="https://code.jquery.com/jquery-3.7.1.js"></script>
    @isset($script)
       {{ $script }}
    @endisset
    
</html>

resources/views/permissions/list.blade.php

<a href="javascript:void(0);" onclick="deletePermission( {{$permission->id}} )"
   class="bg-red-600 text-sm rounded-md text-white px-3 py-2 hover:bg-red-500">删除</a>

以上:onclick="deletePermission( {{$permission->id}} )",删除按钮绑定。

  • 开始书写ajax无刷新删除
.
.
.
</div>

    <x-slot name="script">
        <script type="text/javascript">
            function deletePermission(id) {
                if (confirm("您确定要删除么~~")) {
                    $.ajax({
                        url: '{{route('permissions.destroy')}}',
                        type: 'delete',
                        data: {id: id},
                        dataType: 'json',
                        headers: {
                            'x-csrf-token': '{{ csrf_token() }}'
                        },
                        success: function (response) {
                            window.location.href = '{{ route('permissions.index') }}';
                        }
                    });
                }
            }
        </script>
    </x-slot>
</x-app-layout>