zoukankan      html  css  js  c++  java
  • Laravel Vue Admin -#2 User Management System

    User.vue:

    为了做出这样的效果:

    批注 2020-04-20 010819

    那么选择Vuetify的 Datatable就很合适:

    且每一个都能支持编辑的,那么模板就用 CRUD Actions,拷贝它的代码:

    批注 2020-04-20 011200

    初步效果如下:

    批注 2020-04-20 011451

    接下来我们需要:api接口实现增删改获取用户数据。

    执行:

    php artisan make:controller ApiAdminUserController –r

    批注 2020-04-20 011732

    会在ApiAdmin文件夹下创建一个UserController.php文件:

    批注 2020-04-20 011808

    为了配合api返回json response更加方便所以添加Resource

    执行:

    php artisan make:resource UserResource

    批注 2020-04-20 012017


    返回的资源数据还需要包含用户的role和permission数据,所以UserResource.php文件修改如下:

    <?php
    
    namespace AppHttpResources;
    
    use IlluminateHttpResourcesJsonJsonResource;
    
    class UserResource extends JsonResource
    {
        /**
         * Transform the resource into an array.
         *
         * @param IlluminateHttpRequest $request
         * @return array
         */
        public function toArray($request)
        {
            $defaultData = parent::toArray($request);
    
            $additionalData = [
                'role' => $this->roles->first(),
                'permissions' => $this->permissions,
            ];
    
            return array_merge($defaultData, $additionalData);
        }
    }
    
    

    然后需要一个api route:

    修改api.php如下:

    <?php
    
    use IlluminateHttpRequest;
    use IlluminateSupportFacadesRoute;
    
    /*
    |--------------------------------------------------------------------------
    | API Routes
    |--------------------------------------------------------------------------
    |
    | Here is where you can register API routes for your application. These
    | routes are loaded by the RouteServiceProvider within a group which
    | is assigned the "api" middleware group. Enjoy building your API!
    |
    */
    
    Route::middleware('auth:api')->get('/user', function (Request $request) {
        return $request->user();
    });
    
    Route::apiResource('users','Api/Admin/UserController');
    
    

    UserController.php修改如下:

    <?php
    
    namespace AppHttpControllersApiAdmin;
    
    use AppHttpControllersController;
    use AppHttpResourcesUserResource;
    use AppUser;
    use IlluminateHttpRequest;
    use IlluminateSupportFacadesHash;
    
    class UserController extends Controller
    {
        /**
         * Display a listing of the resource.
         *
         * @return IlluminateHttpResponse
         */
        public function index()
        {
            //
            return UserResource::collection(User::all());
        }
    
        /**
         * Show the form for creating a new resource.
         *
         * @return IlluminateHttpResponse
         */
        public function create()
        {
            //
        }
    
        /**
         * Store a newly created resource in storage.
         *
         * @param IlluminateHttpRequest $request
         * @return IlluminateHttpResponse
         */
        public function store(Request $request)
        {
            //
            $data = $request->validate([
                'name' => 'required|min:3',
                'email' => 'required|email',
                'password' => 'required|confirm',
            ]);
            $data['password'] = Hash::make($data['password']);
    
            $user = User::create($data);
            if ($request->has('role')) {
                $user->attachRoles($request->role['name']);
            }
    
            if ($request->has('permissions')) {
                $user->givePermissionTo(collect($request->permissions)->pluck('id')->toArray());
            }
    
            return response()->json(['Message' => 'User Created', 'User' => $user]);
        }
    
        /**
         * Display the specified resource.
         *
         * @param int $id
         * @return IlluminateHttpResponse
         */
        public function show($id)
        {
            //
        }
    
        /**
         * Show the form for editing the specified resource.
         *
         * @param int $id
         * @return IlluminateHttpResponse
         */
        public function edit($id)
        {
            //
        }
    
        /**
         * Update the specified resource in storage.
         *
         * @param IlluminateHttpRequest $request
         * @param int $id
         * @return IlluminateHttpResponse
         */
        public function update(Request $request, $id)
        {
            //
            $data = $request->validate([
                'name' => 'required|min:3',
                'email' => 'required|email',
            ]);
            $data['password'] = Hash::make($data['password']);
    
            $user = User::update($data);
            if ($request->has('roles')) {
                $user->attachRoles($request->roles['name']);
            }
    
            if ($request->has('permissions')) {
                $user->givePermissionTo(collect($request->permissions)->pluck('id')->toArray());
            }
    
            return response()->json(['Message' => 'User Updated', 'User' => $user]);
        }
    
        /**
         * Remove the specified resource from storage.
         *
         * @param int $id
         * @return IlluminateHttpResponse
         */
        public function destroy(User $user)
        {
            //
            User::delete($user);
    
            return response()->json(['Message' => 'User Deleted']);
        }
    }
    
    
  • 相关阅读:
    jsTree展开根节点 设置用户图标
    Js图片缩放代码 鼠标滚轮放大缩小 图片向右旋转
    MySQL删除重复数据
    200道物理学难题——001 三只蜗牛
    慎用GetOpenFileName
    Windows7隐藏字体
    Windows 位图
    Windows 调色板
    C++模板特化
    使用Visual Studio制作安装包
  • 原文地址:https://www.cnblogs.com/dzkjz/p/12735518.html
Copyright © 2011-2022 走看看