User.vue:
In order to make this effect:
Then choose Vuetify's Datatable :
And each one can support editing, then the template uses CRUD Actions , copy its code:
The initial results are as follows:
Next we need to: api interface to achieve addition, deletion, modification and access to user data.
carried out:
php artisan make:controller Api\Admin\UserController –r
A UserController.php file will be created under the Api \ Admin folder:
In order to cooperate with the API to return json response is more convenient, so add Resource
carried out:
php artisan make:resource UserResource
The returned resource data also needs to contain the user's role and permission data, so the UserResource.php file is modified as follows:
<?php namespace App\Http\Resources; use Illuminate\Http\Resources\Json\JsonResource; class UserResource extends JsonResource { /** * Transform the resource into an array. * * @param \Illuminate\Http\Request $request * @return array */ public function toArray($request) { $defaultData = parent::toArray($request); $additionalData = [ 'role' => $this->roles->first(), 'permissions' => $this->permissions, ]; return array_merge($defaultData, $additionalData); } }
Then you need an api route:
Modify api.php as follows:
<?php use Illuminate\Http\Request; use Illuminate\Support\Facades\Route; /* |-------------------------------------------------------------------------- | 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 is modified as follows:
<?php namespace App\Http\Controllers\Api\Admin; use App\Http\Controllers\Controller; use App\Http\Resources\UserResource; use App\User; use Illuminate\Http\Request; use Illuminate\Support\Facades\Hash; class UserController extends Controller { /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index() { // return UserResource::collection(User::all()); } /** * 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(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 \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(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 \Illuminate\Http\Response */ public function destroy(User $user) { // User::delete($user); return response()->json(['Message' => 'User Deleted']); } }