Praktikum ini dibangun dengan blog sebelumnya oleh karena itu disarankan untuk mengikuti blog sebelum melanjutkannya
Link BlogSelanjtnya membuat fitur manajemen users, kita akan menggunakan fungsi keseluruhan CRUD maka kita akan membuat controller resource , buka terminal/CMD kemudian ketikkan perintah berikut
php artisan make:controller UserController -–resourceUbah kode routing menjadi seperti di bawah
<?php
use Illuminate\Support\Facades\Route;
use Illuminate\Support\Facades\Auth;
use App\Http\Controllers\UserController;
Route::get('/', function () {
return view('home');
});
Auth::routes();
Route::resource('users', UserController::class);
Route::get('/home', [App\Http\Controllers\HomeController::class, 'index'])->name('home');
Setelah itu, susun user controller seperti di bawah ini
<?php
namespace App\Http\Controllers;
use App\Models\User;
use Illuminate\Support\Facades\Hash;
use Illuminate\Http\Request;
class UserController extends Controller
{
/**
* Display a listing of the resource.
*/
public function index()
{
$users = User::all();
return view('users.index', ['users' => $users]);
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
return view('users.create');
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request)
{
$user = new \App\Models\User;
$user->name = $request->get('nama');
$user->username = $request->get('username');
$user->email = $request->get('email');
$user->password = Hash::make($request->get('password'));
$user->level = json_encode($request->get('level'));
$user->save();
return redirect()->route('users.index')->with('status', 'user baru
berhasil ditambahkan');
}
/**
* Display the specified resource.
*/
public function show(string $id)
{
//
}
/**
* Show the form for editing the specified resource.
*/
public function edit($id)
{
$user = User::findOrFail($id);
return view('users.edit', ['user' => $user]);
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request, $id)
{
$user = \App\Models\User::findOrFail($id);
$user->name = $request->get('nama');
$user->level = json_encode($request->get('level'));
$user->save();
return redirect()->route('users.index', [$id])->with(
'status',
'User berhasil diubah'
);
}
/**
* Remove the specified resource from storage.
*/
public function destroy($id)
{
$user = \App\Models\User::findOrFail($id);
$user->delete();
return redirect()->route('users.index')->with('status', 'User
berhasil dihapus');
}
}
Pertama-tama, buat folder users untuk menampung seluruh view yang terkait dengan pengguna. Setelah itu buat file create.blade.php, edit.blade.php dan index.blade.php
@extends('layouts.main')
@section('judul')
Users
@endsection
@section('konten')
@if (session('status'))
<div class="alert alert-success">
{{ session('status') }}
</div>
@endif
<div class="card shadow mb-4">
<a href="{{ route('users.create') }}" class="btn btn-primary btnsm">Tambah User</a>
<div class="card-header py-3">
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table table-bordered" id="dataTable" width="100%" cellspacing="0">
<thead>
<tr>
<th><b>Name</b></th>
<th><b>Username</b></th>
<th><b>Email</b></th>
<th><b>Action</b></th>
</tr>
</thead>
<tbody>
@foreach ($users as $user)
<tr>
<td>{{ $user->name }}</td>
<td>{{ $user->username }}</td>
<td>{{ $user->email }}</td>
<td>
<a href="{{ route('users.edit', $user->id) }}" class="btn btn-sm btn-success">Edit</a>
<form onsubmit="return confirm('Hapus data user ?')" class="d-inline"
action="{{ route('users.destroy', [$user->id]) }}" method="POST">
@csrf
<input type="hidden" name="_method" value="DELETE">
<input type="submit" value="Hapus" class="btn btn-danger btn-sm">
</form>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</div>
@endsection
View ini akan menampilkan seluruh user di aplikasi. Terdapat fungsi membuat user dengan memanggil fungsi create, fungsi hapus dan delete pada setiap baris pengguna yang ada dipanggil di UserController. Tampilannya seperti
@extends('layouts.main')
@section('judul')
Create User
@endsection
@section('konten')
<div class="card shadow mb-4">
<div class="card-header py-3">
</div>
<div class="card-body">
<div class="row">
<div class="col-lg-9">
<form method="POST" action="{{ route('users.store') }}">
@csrf
<div class="form-group row">
<label class="col-sm-3 col-form-label textcenter">Nama</label>
<div class="col-sm-9">
<input type="text" class="form-control" id="nama" name="nama">
</div>
</div>
<div class="form-group row">
<label class="col-sm-3 col-form-label textcenter">Email</label>
<div class="col-sm-9">
<input type="email" class="form-control" id="email" name="email">
</div>
</div>
<div class="form-group row">
<label class="col-sm-3 col-form-label textcenter">Username</label>
<div class="col-sm-9">
<input type="text" class="form-control" id="username" name="username">
</div>
</div>
<div class="form-group row">
<label class="col-sm-3 col-form-label textcenter">Password</label>
<div class="col-sm-2">
<input type="password" class="form-control" id="password" name="password">
</div>
</div>
<div class="form-group row">
<label class="col-sm-3 col-form-label textcenter">Level</label>
<div class="col-sm-4 mr-2">
<select class="form-control select2-multiple" name="level[]" multiple="multiple">
<option value="ADMIN">ADMIN</option>
<option value="GURU">GURU</option>
<option value="STAFF">STAFF</option>
</select>
</div>
</div>
<div class="form-group row">
<div class="col-sm-10 text-center">
<button type="reset" class="btn btn-warning btnsm">Batal</button>
<button type="submit" class="btn btn-primary btnsm">Simpan</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
@endsection
View ini bertanggung jawab untuk membuat user dengan form nama, username, password, dan level dari user. Tampilannya seperti
@extends('layouts.main')
@section('judul')
Edit User
@endsection
@section('konten')
<div class="card shadow mb-4">
<div class="card-header py-3">
</div>
<div class="card-body">
<div class="row">
<div class="col-lg-9">
<form method="POST" action="{{ route('users.update', [$user->id]) }}">
<input type="hidden" name="_method" value="PUT">
@csrf
<div class="form-group row">
<label class="col-sm-3 col-form-label textcenter">Nama</label>
<div class="col-sm-9">
<input type="text" class="form-control" id="nama" name="nama"
value="{{ $user->name }}">
</div>
</div>
<div class="form-group row">
<label class="col-sm-3 col-form-label textcenter">Email</label>
<div class="col-sm-9">
<input type="email" class="form-control" id="email" name="email"
value="{{ $user->email }}">
</div>
</div>
<div class="form-group row">
<label class="col-sm-3 col-form-label textcenter">Username</label>
<div class="col-sm-9">
<input type="text" class="form-control" id="username" name="username"
value="{{ $user->username }}">
</div>
</div>
<div class="form-group row">
<label class="col-sm-3 col-form-label textcenter">Level</label>
<div class="col-sm-4 mr-2">
<select class="form-control select2-multiple" name="level[]" multiple="multiple">
<option value="ADMIN"
{{ in_array('ADMIN', json_decode($user->level)) ? 'selected' : '' }}>ADMIN</option>
<option value="GURU"
{{ in_array('GURU', json_decode($user->level)) ? 'selected' : '' }}>GURU</option>
<option value="STAFF"
{{ in_array('STAFF', json_decode($user->level)) ? 'selected' : '' }}>STAFF</option>
</select>
</div>
</div>
<div class="form-group row">
<div class="col-sm-10 text-center">
<a href="{{ route('users.index') }}" class="btn
btn-warning btn-sm">Batal</a>
<button type="submit" class="btn btn-primary btnsm">Simpan</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
@endsection
View ini bertanggung jawab untuk memodifikasi user yang telah ada. Tampilannya seperti
Controller digunakan untuk menjalankan fungsi-fungsi yang dijalankan oleh suatu rute.