Modul Praktek Web Programming-Crud Laravel 10
Modul Praktek Web Programming-Crud Laravel 10
DAFTAR ISI
Ketika install Composer, instalasi Composer akan menanyakan dimana letak php.exe, maka dari
itu mengapa kita harus menginstall XAMPP terlebih dahulu karena php.exe berada didalam XAMPP.
Lihat gambar dibawah
Untuk memastikan apakah Composer sudah benar-benar terinstall di dalam komputer, maka
bisa coba jalankan perintah berikut ini di dalam terminal/CMD.
composer
Di dalam Laravel, ada beberapa cara yang bisa kita gunakan dalam pembuatan sebuah project,
salah satunya adalah composer create-project . Dengan perintah ini, kita bisa menentukan versi
Laravel yang akan kita gunakan dengan lebih mudah.
Jika perintah di atas berhasil dijalankan, maka kita akan membuat project Laravel baru dengan
versi 10.x.x dan nama dari project-nya adalah crud-laravei-10 .
Silahkan tunggu proses installasinya sampai selesai dan pastikan terhubung dengan internet,
karena semua paketnya akan diunduh secara online.
cd crud-laravel-10
Perintah di atas digunakan untuk masuk ke dalam folder project kita yang bernama crud-
laravel-10 . Setelah berhasil masuk di dalam project-nya, sekarang jalankan perintah berikut ini di
dalam terminal/CMD untuk menjalankan server-nya.
Setelah berhasil, matikan kembali server laravel dengan menekan CTRL+C di terminal
7. Buka browser dan ketikkan 127.0.0.1:8000 atau localhost:8000, pastikan halaman welcome to
laravel muncul
11. Di VCS, Lihat di panel explorer, dalam folder public, ada folder storage yang sudah berhasil
terhubung dengan ikon panah kecil
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('posts');
}
};
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
/**
* fillable
*
* @var array
*/
protected $fillable = [
'image',
'title',
'content',
];
}
4. MENJALANKAN MIGRATION
19. Agar table dan field-field yang ada di dalam MIGRATION di buat ke dalam database, maka kita
perlu menjalankan perintah migrate
20. Dalam Terminal VSC, jalankan
php artisan migrate
Kopas saja perintah ini ke terminal Dan ENTER, seperti dalam gambar dibawah
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
25. Untuk membuat ROUTE, buka file routes/web.php dan masukkan kode dibawah ini dan SAVE
(kopas saja, kode adalah baris yang berlatar abu-abu)
<?php
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider and all of them will
| be assigned to the "web" middleware group. Make something great!
|
*/
Route::get('/', function () {
return view('welcome');
});
//route resource
Route::resource('/posts', \App\Http\Controllers\PostController::class);
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Data Posts - Latihan CRUD Laravel10 </title>
<link rel="stylesheet"
href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
<link rel="stylesheet"
href="//cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/toastr.min.css">
</head>
<body style="background: lightgray">
<script>
//message with toastr
@if(session()->has('success'))
@elseif(session()->has('error'))
@endif
</script>
</body>
</html>
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
/**
* create
*
* @return View
*/
public function create(): View
{
/**
* store
*
* @param mixed $request
* @return RedirectResponse
*/
public function store(Request $request): RedirectResponse
{
//validate form
$this->validate($request, [
'image' => 'required|image|mimes:jpeg,jpg,png|max:2048',
'title' => 'required|min:5',
'content' => 'required|min:10'
]);
//upload image
$image = $request->file('image');
$image->storeAs('public/posts', $image->hashName());
//create post
Post::create([
'image' => $image->hashName(),
'title' => $request->title,
'content' => $request->content
]);
//redirect to index
return redirect()->route('posts.index')->with(['success' => 'Data Berhasil Disimpan!']);
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Tambah Data Post - SantriKoding.com</title>
<link rel="stylesheet"
href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
</head>
<body style="background: lightgray">
@csrf
<div class="form-group">
<div class="form-group">
<label class="font-weight-bold">JUDUL</label>
<input type="text" class="form-control @error('title') is-invalid @enderror"
name="title" value="{{ old('title') }}" placeholder="Masukkan Judul Post">
<div class="form-group">
<label class="font-weight-bold">KONTEN</label>
<textarea class="form-control @error('content') is-invalid @enderror"
name="content" rows="5" placeholder="Masukkan Konten Post">{{ old('content') }}</textarea>
</form>
</div>
</div>
</div>
</div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script
src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
<script src="https://cdn.ckeditor.com/4.13.1/standard/ckeditor.js"></script>
<script>
CKEDITOR.replace( 'content' );
</script>
</body>
</html>
Method SHOW akan menampilkan detail dari data post yang sudah di masukkan/entri. Method ini
akan menampilkan data berdasarkan field id
39. Buka kembali PostController.php dan tambahkan kode dibawah ini dan letakkan dibawah
methode store dan SAVE (kopas saja, kode adalah baris yang berlatar abu-abu)
/**
* show
*
* @param mixed $id
* @return View
*/
public function show(string $id): View
{
//get post by ID
$post = Post::findOrFail($id);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script
src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
</body>
</html>
Seperti ditampilkan oleh gambar dibawah
45. Maka halaman detail dari post akan muncul seperti gambar dibawah
46. Tambahkan 2 method dalam PostController.php yaitu function edit dan function update
47. Function edit adalah method untuk menampilkan halaman form edit
48. Function update adalah method untuk memproses data yang dikitim oleh halaman form edit dan
mengupdate data ke dalam database
49. Buka kembali file PostController.php di VSC
50. Tambah kode ini di bawah redirectResponse dan SAVE:
51. Tambahkan kode dibawah ini dalam PostController.php, di bawah function SHOW dan SAVE:
(kopas saja, kode adalah baris yang berlatar abu-abu)
/**
* update
*
* @param mixed $request
* @param mixed $id
* @return RedirectResponse
*/
public function update(Request $request, $id): RedirectResponse
{
//validate form
//get post by ID
$post = Post::findOrFail($id);
} else {
//redirect to index
return redirect()->route('posts.index')->with(['success' => 'Data Berhasil Diubah!']);
}
52. Setelah menambah function/metho dalam CONTROLLER, maka kita harus membuat halaman
VIEW form edit
53. Dalam folder resources/views/posts, buat file edit.blade.php
54. Tambahkan kode dibawah ini kedalam edit.blade.php dan SAVE (kopas saja, kode adalah baris
yang berlatar abu-abu)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Edit Data Post - SantriKoding.com</title>
<link rel="stylesheet"
href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
</head>
<body style="background: lightgray">
<div class="form-group">
<label class="font-weight-bold">GAMBAR</label>
<input type="file" class="form-control" name="image">
<div class="form-group">
<label class="font-weight-bold">JUDUL</label>
<input type="text" class="form-control @error('title') is-invalid @enderror"
name="title" value="{{ old('title', $post->title) }}" placeholder="Masukkan Judul Post">
<div class="form-group">
<label class="font-weight-bold">KONTEN</label>
<textarea class="form-control @error('content') is-invalid @enderror"
name="content" rows="5" placeholder="Masukkan Konten Post">{{ old('content', $post-
>content) }}</textarea>
</form>
</div>
</div>
</div>
</div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script
src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
<script src="https://cdn.ckeditor.com/4.13.1/standard/ckeditor.js"></script>
<script>
CKEDITOR.replace( 'content' );
</script>
</body>
</html>
Seperti gambar dibawah ini
56. Halaman edit akan muncul, edit data didalam kotak merah diatas
57. Edit KONTEN seperlunya dan klik tombol UPDATE
//delete image
Storage::delete('public/posts/'. $post->image);
//delete post
$post->delete();
//redirect to index
return redirect()->route('posts.index')->with(['success' => 'Data Berhasil Dihapus!']);
}
Seperti gambar berikut