laravel-cms人员管理设置角色

交互设计

  我们之前写完了人员管理和角色管理的增删改查,现在,让我们把人员管理和角色相关联起来。

  更改AdminCreateRequest.php

  我们更改此文件添加时添加对于角色的验证,更改后如下:

  <?phpnamespace App\Http\Requests;use Illuminate\Foundation\Http\FormRequest;use Illuminate\Contracts\Validation\Validator;use Illuminate\Validation\ValidationException;use Symfony\Component\HttpFoundation\Response;class AdminCreateRequest exts FormRequest{ /** * Determine if the user is authorized to make this request. * * @return bool */ public function authorize() { return true; } /** * Get the validation rules that apply to the request. * * @return array */ public function rules() { return [ // 'username'=>'bail

  required', 'password'=>'bail

  required

  min:10

  max:30', 'role'=>'bail

  required' ]; } public function messages(){ return [ 'username.required'=>':attribute 不能为空', 'password.required'=>':attribute 不能为空', 'password.min'=>':attribute 最小为10位长度', 'password.max'=>':attribute 最大为30位长度', 'role.required'=>':attribute 不能为空' ]; } public function attributes(){ return [ 'usernmae'=>'用户名', 'password'=>'密码', 'role'=>'用户角色' ]; } protected function failedValidation(Validator $validator) { // 此处自定义表单验证错误信息 $data = [ 'code' => 1000, 'msg' => $validator->errors(), ]; $respone = new Response(json_encode($data)); throw (new ValidationException($validator, $respone)) ->errorBag($this->errorBag) ->redirectTo($this->getRedirectUrl()); }}更改admin.blade.php

  更改admin.blade.php添加角色选择框

  @exts('admin.common')@section('content')<button type="button" class="btn btn-primary" style="margin:10px auto;" onclick="onShowAdd()">添加</button> <table class="table table-hover table-bordered"> <thead> <tr> <th scope="col">ID</th> <th scope="col">名称</th> <th scope="col">操作</th> </tr> </thead> <tbody> @foreach ($admins as $k=>$v) <tr> <th scope="row">{{$v['id']}}</th> <td>{{$v['username']}}</td> <td> <button type="button" class="btn btn-outline-primary" onclick='editAdmin("{{route("admin.detail",array("id"=>$v["id"]))}}")'>编辑</button> <button type="button" class="btn btn-outline-danger" onclick="deleteAdmin({{$v['id']}})">删除</button> </td> </tr> @foreach </tbody> </table> <nav aria-label="Page navigation example"> <ul class="pagination justify-content-center"> @if($admins->currentPage()!=1) <li class="page-item"><a class="page-link" href="{{route('admin.index').'?page=1'}}">首页</a></li> <li class="page-item"><a class="page-link" href="{{route('admin.index').'?page='.($admins->currentPage()-1)}}">上一页</a></li> <li class="page-item"><a class="page-link" href="{{route('admin.index').'?page='.($admins->currentPage()-1)}}"> {{$admins->currentPage()-1}}</a></li> @if <li class="page-item"> <a class="page-link" href="{{route('admin.index').'?page='.($admins->currentPage())}}" style="background:black;color:white"> {{$admins->currentPage()}} </a> </li> @if($admins->currentPage()!=$admins->lastPage()) <li class="page-item"><a class="page-link" href="{{route('admin.index').'?page='.($admins->currentPage()+1)}}"> {{$admins->currentPage()+1}}</a> </li> <li class="page-item"><a class="page-link" href="{{route('admin.index').'?page='.($admins->currentPage()+1)}}">下一页</a></li> <li class="page-item"><a class="page-link" href="{{route('admin.index').'?page='.$admins->lastPage()}}">末页</a></li> @if </ul> </nav> <!-- 添加弹框 --> <p class="modal fade" id="addModel" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true"> <p class="modal-dialog modal-dialog-centered"> <p class="modal-content"> <p class="modal-header"> <h5 class="modal-title" id="exampleModalLabel">添加人员</h5> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">×</span> </button> </p> <p class="modal-body"> <p class="form-group"> <label for="username_id">用户名</label> <input type="username" class="form-control" id="username_id" aria-describedby="emailHelp"> <small id='username_err_id'></small> </p> <p class="form-group"> <label for="passwd_id">密码</label> <input type="password" class="form-control" id="password_id"> <small id='password_err_id'></small> </p> <p class="form-group"> <label for="role_id">角色</label> <select class="custom-select" id="role_id"> @foreach ($roles as $k=>$v) <option value='{{$v["id"]}}'>{{$v['role_name']}}</option> @foreach </select> <small id='role_err_id'></small> </p> </p> <input type="hidden" id="admin_id"> <p class="modal-footer"> <button type="button" class="btn btn-secondary" data-dismiss="modal">关闭</button> <button id="submit_id" type="button" class="btn btn-primary">确定</button> </p> </p> </p> </p> <style> #password_err_id,#username_err_id,#role_err_id{ color:red; } </style>@section@section('javascript') <script type="text/javascript"> function onShowAdd(){ $('#addModel').modal('show'); $('#username_id').val(); $('#password_id').val(); $('#role_id').val(); $('#admin_id').val(); } $('#submit_id').click(function(){ var username = $('#username_id').val(); var password = $('#password_id').val(); var role = $('#role_id').val(); var adminId = $('#admin_id').val(); var reqUrl = ''; var datas = {username,password,role,_token:"{{csrf_token()}}"}; if(!adminId) { // 是添加 reqUrl = "{{route('admin.store')}}"; }else{ // 是更改 reqUrl = "{{route('admin.update',['admin'=>'my_id'])}}"; reqUrl = reqUrl.replace(/my_id/,adminId); // datas.id = adminId; datas._method ='put'; } datas = JSON.stringify(datas); $.ajax({ type:"post", url:reqUrl, data:datas, dataType:"json", contentType:"application/json", success:function(data){ $('#username_err_id').text(''); $('#password_err_id').text(''); $('#role_err_id').text(''); if(data.code == 200) { window.location.reload(); }else{ if(data.code==1000) { data.msg.username && $('#username_err_id').text(data.msg.username[0]); data.msg.password && $('#password_err_id').text(data.msg.password[0]); data.msg.role && $('#role_err_id').text(data.msg.role[0]); } } }, error:function(err){ } }); }); function editAdmin(url) { $('#addModel').modal('show'); $.ajax({ type:"get", url:url, dataType:"json", contentType:"application/json", success:function(data){ $('#username_err_id').text(''); $('#password_err_id').text(''); $('#role_err_id').text(''); $('#admin_id').val(); if(data.code == 200) { $('#username_id').val(data.info.username); $('#admin_id').val(data.info.id); }else{ } }, error:function(err){ } }); }; function deleteAdmin(id) { var reqUrl = "{{route('admin.destroy',['admin'=>'my_id'])}}"; reqUrl = reqUrl.replace(/my_id/,id); $.ajax({ headers: { 'X-CSRF-TOKEN' : '{{ csrf_token() }}' }, type:"delete", url:reqUrl, dataType:"json", contentType:"application/json", success:function(data){ if(data.code == 200) { window.location.reload(); }else{ if(data.code==1000) { } } }, error:function(err){ } }); } </script> @section 更改AdminController.php

  添加对于角色相关表的数据添加,如下:

  <?phpnamespace App\Http\Controllers\admin;use App\Http\Controllers\Controller;use Illuminate\Http\Request;use App\Http\Requests\AdminCreateRequest;use Illuminate\Support\Facades\Hash;use App\Models\Admin;use App\Models\Role;use App\Models\AdminRole;use Illuminate\Support\Facades\DB;class AdminController exts Controller{ /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index() { // $admins = Admin::paginate(2,['id','username']); // 获取所有的角色 $roles = Role::all(); return view('admin.admin',['admins'=>$admins,'roles'=>$roles]); } /** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ public function create() { // } /** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(AdminCreateRequest $request) { DB::beginTransaction(); try{ // $username = $request->input('username'); $password = Hash::make($request->input('password')); $role_id = $request->input('role'); $admin = new Admin(); $admin->username = $username; $admin->password = $password; $state = $admin->save(); $admin_id = $admin->id; $adminRole = new AdminRole(); $adminRole->admin_id = $admin_id; $adminRole->role_id = $role_id; $adminRoleState = $adminRole->save(); if($state && $adminRoleState) { DB::commit(); return response()->json(['code'=>'200','msg'=>'添加成功']); } }catch(\Exception $e){ DB::rollback(); } return response()->json(['code'=>'1000','msg'=>'添加失败']); } /** * Display the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function show($id) { // } /** * Show the form for editing the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function edit($id) { // } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param int $id * @return \Illuminate\Http\Response */ public function update(AdminCreateRequest $request, $id) { $username = $request->input('username'); $password = Hash::make($request->input('password')); $state = Admin::where('id',$id)->update(['username'=>$username,'password'=>$password]); // if($state) { return response()->json(['code'=>'200','msg'=>'更改成功']); }else{ return response()->json(['code'=>'1000','msg'=>'更改失败']); } } /** * Remove the specified resource from storage. * * @param int $id * @return \Illuminate\Http\Response */ public function destroy($id) { $state = Admin::destroy($id); // if($state) { return response()->json(['code'=>'200','msg'=>'删除成功']); }else{ return response()->json(['code'=>'1000','msg'=>'删除失败']); } } // 获取某个人员具体信息 public function detail($id){ $admin = Admin::where('id',$id)->first(['id','username']); if($admin) { return response()->json(['code'=>'200','info'=>$admin]); }else{ return response()->json(['code'=>'1000','msg'=>'获取信息失败']); } }}

标签: 交互设计