laravel8.5与layuiadmin整合(8)


38.开发角色和权限功能,大部功能,与上面的系统用户增删改查类似
开发角色,在路由文件中
/routes/web.php
添加

// 角色管理
Route::group(['prefix' => 'admin','middleware'=>['auth']],function() {
    // 展示角色列表
    Route::get('role',[App\Http\Controllers\Admin\RoleController::class,'index'])
        ->name('admin.role');
    // 获取角色数据
    Route::get('role/data',[App\Http\Controllers\Admin\RoleController::class,'data'])
        ->name('admin.role.data');
    // 添加角色
    Route::get('role/create',[App\Http\Controllers\Admin\RoleController::class,'create'])
        ->name('admin.role.create');
    // 保存添加的角色
    Route::post('role/store',[App\Http\Controllers\Admin\RoleController::class,'store'])
        ->name('admin.role.store');
    //编辑角色
    Route::get('role/{id}/edit',[App\Http\Controllers\Admin\RoleController::class,'edit'])
        ->name('admin.role.edit');
    // 保存编辑
    Route::put('role/{id}/update',[App\Http\Controllers\Admin\RoleController::class,'update'])
        ->name('admin.role.update');
    //修改角色的拥有的权限
    Route::get('role/{id}/permission',[App\Http\Controllers\Admin\RoleController::class,'permission'])
        ->name('admin.role.permission');
    // 保存角色修改的权限
    Route::put('role/{id}/assignPermission',[App\Http\Controllers\Admin\RoleController::class,'assignPermission'])
        ->name('admin.role.assignPermission');
});

39. 在 /resources/views/admin/layout.blade.php修改
角色管理

角色管理

40.建立角色控制器
/app/Http/Controllers/Admin/RoleController.php

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Spatie\Permission\Models\Role;

class RoleController extends Controller {

    /**
     * 显示角色列表
     * @return \Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View
     */
    public function index() {
        return view('admin.role.index');
    }
    
    /**
     * 添加创建新角色
     * @return \Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View
     */
    public function create() {
        return view('admin.role.create');
    }
}

41.分别添加以上的模板文件
/resources/views/admin/role/index.blade.php

@extends('admin.base')

@section('content')
class="layui-card">
class="layui-card-header layuiadmin-card-header-auto">
class="layui-card-body">
@endsection @section('script') @endsection /resources/views/admin/role_form.blade.php {{csrf_field()}}
class="layui-form-item">
class="layui-input-block"> class="layui-input" type="text" name="name" lay-verify="required" value="{{$role->name??old('name')}}" placeholder="如:admin">
class="layui-form-item">
class="layui-input-block"> class="layui-btn" >返 回
/resources/views/admin/role/create.blade.php @extends('admin.base') @section('content')
class="layui-card">
class="layui-card-header layuiadmin-card-header-auto">

添加角色

class="layui-card-body">
class="layui-form"> @include('admin.role._form')
@endsection

42.控制器添加获取数据方法
/app/Http/Controllers/Admin/RoleController.php

    /**
     * 获取角色内容
     * @param Request $request
     * @return \Illuminate\Http\JsonResponse
     */
    public function data(Request $request) {
        $sql = "select * from roles";
        $sqlCount = "select count(*) as total from roles";
        $page = 1;
        $pagesize = 10;
        if($request->get('page')){
            $page = intval($request->get('page'));
            if($page < 1){
                $page = 1;
            }
        }

        if($request->get('limit')){
            $pagesize = $request->get('limit');
            if($pagesize < 1) {
                $pagesize = 10;
            }
        }
        $start_num = ($page - 1) * $pagesize;
        $sql .= " limit {$start_num},{$pagesize}";
        $listResult= DB::select($sql);
        $totalCount= DB::selectOne($sqlCount);
        $listData = [];
        foreach ($listResult as $data_row) {
            $listData[] = $data_row;
        }
        $data = [
            'code' => 0,
            'msg' => '正在请求中...',
            'count' => $totalCount->total,
            'data' => $listData
        ];
        return response()->json($data);
    }

此时角色浏览,添加了

PHP