Cara Membuat CRUD Laravel 8 Untuk Pemula
Apa kabar teman-teman, semoga sehat selalu..., masih bersama kami dengan berbagai tutorial untuk belajar dan menambah pengetahuan. Pada artikel kali ini kita akan membahas tentang Cara Membuat CRUD Laravel 8 Untuk Pemula, Tidak asing lagi kan dengan framework yang satu ini,..
cuss tetap ikuti langkahnya sampai selesai ya....
Pengenalan Laravel 8
Taylor Otwell baru saja merilis Laravel 8 pada tanggal 8 September 2020
Pada versi terbaru ini, laravel 8 memberikan beberapa fitur baru dan dukungan LTS yang keren yang perlu kita ketahui.
Disini teman-teman hanya perlu mengikuti beberapa langkah dasar menggunakan controller, model, route, bootstrap 4 dan blade.
Step #1 - Instal Laravel 8
Ada 2 cara yang dapat dilakukan untuk menginstal laravel 8, pertama dengan Laravel Installer dan yang kedua dengan composer.
Cara 1 : Menggunakan Laravel Installer
Silahkan ketik command di bawah ini untuk menginstal Laravel terlebih dahulu:
composer global require laravel/installer
Kemudian buat project baru dengan ketik command berikut ini :
laravel new laravel8_crud
Cara 2 : Menggunakan Composer
Ini adalah cara termudah yang biasa kita lakukan, cukup dengan ketik perintah berikut ini :
composer create-project --prefer-dist laravel/laravel laravel8_crud
Silahkan enter dan tunggu proses sampai selesai.
Step #2 - Konfigurasi Database
Step kedua ini yaitu membuat dan mengatur database, silahkan aktifkan web server yang kamu gunakan semisal XAMMP, Laragon, MAMP, Nginx dan lain - lain. Kemudian buat database baru bernama db_laravel8_crud , setelah itu buka file .env yang ada di dalam direktori blog/.env.
Ubah nama databse, root, password dll yang sesuai dengan web server teman-teman.
Tips 1 : Konfigurasi Database di XAMPP (Windows/Linux) dan Laragon (Windows)
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=db_laravel8_crud
DB_USERNAME=root
DB_PASSWORD=
Tips 2 : Konfigurasi Database di MAMP (MAC Os)
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=8889
DB_DATABASE=db_laravel8_crud
DB_USERNAME=root
DB_PASSWORD=root
Step #3 - Membuat Migration dan Model
Pada tahap studi kasus kali ini kita akan menggunakan table post sebagai contoh. Maka itu kita perlu membuat table sekaligus model-nya terlebih dahulu.
Silahkan ketik command di bawah ini:
php artisan make:model Post --migration
Kemudian buka folder migrations yang ada di direktori laravel8_crud/database/migrations, lalu modifikasi skema field table posts dengan kode di bawah ini:
<?php
use
Illuminate\Database\Migrations\Migration;
use
Illuminate\Database\Schema\Blueprint;
use
Illuminate\Support\Facades\Schema;
class
CreatePostsTable
extends
Migration
{
/**
* Run the migrations.
*
* @return void
*/
public
function
up()
{
Schema::create(
'posts'
,
function
(Blueprint
$table
) {
$table
->id();
$table
->string(
'title'
);
$table
->text(
'content'
);
$table
->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public
function
down()
{
Schema::dropIfExists(
'posts'
);
}
}
Apakah sudah selesai merubah kodenya teman-teman?
Jika sudah kita lanjutkan untuk menjalankan perintah di bawah ini agar field yang kita buat tadi ter-migrasi ke database:
php artisan migrate
Silahkan tunggu prosesnya sampai selesai.
Step #4 - Membuat Resource Controller
Pada tahap ini kita akan membuat controller untuk mengatur jalanya file, silahkan ketik di command di bawah ini untuk membuat resource controller :
php artisan make:controller PostController --resource
Jika berhasil maka akan terdapat file PostController.php di dalam direktori app/Http/Controller, di dalam PostController.php sudah tersedia beberapa function, yaitu:
- index()
- create()
- store()
- show()
- edit()
- destroy()
Sekarang kita modifikasi isi file tersebut seperti kode berikut:
<?php
namespace
App\Http\Controllers;
use
Illuminate\Http\Request;
use
App\Models\Post;
class
PostController
extends
Controller
{
public
function
index()
{
$posts
= Post::latest()->paginate(5);
return
view(
'posts.index'
,compact(
'posts'
))
->with(
'i'
, (request()->input(
'page'
, 1) - 1) * 5);
}
public
function
create()
{
return
view(
'posts.create'
);
}
public
function
store(Request
$request
)
{
$request
->validate([
'title'
=>
'required'
,
'content'
=>
'required'
,
]);
Post::create(
$request
->all());
return
redirect()->route(
'posts.index'
)
->with(
'success'
,
'Post created successfully.'
);
}
public
function
show(Post
$post
)
{
return
view(
'posts.show'
,compact(
'post'
));
}
public
function
edit(Post
$post
)
{
return
view(
'posts.edit'
,compact(
'post'
));
}
public
function
update(Request
$request
, Post
$post
)
{
$request
->validate([
'title'
=>
'required'
,
'content'
=>
'required'
,
]);
$post
->update(
$request
->all());
return
redirect()->route(
'posts.index'
)
->with(
'success'
,
'Post updated successfully'
);
}
public
function
destroy(Post
$post
)
{
$post
->
delete
();
return
redirect()->route(
'posts.index'
)
->with(
'success'
,
'Post deleted successfully'
);
}
}
Jangan lupa untuk Save.
Step #5 - Modifikasi Model
Silahkan buka file app/Model/Post.php dan tambahkan fillable berikut:
<?php
namespace
App\Models;
use
Illuminate\Database\Eloquent\Factories\HasFactory;
use
Illuminate\Database\Eloquent\Model;
class
Post
extends
Model
{
use
HasFactory;
protected
$fillable
= [
'title'
,
'content'
];
}
Step #6 - Menambahkan Route
Sekarang kita tambahkan route untuk mengakses resource controller post, buka route/web.php dan tambahkan kode berikut:
use App\Http\Controllers\PostController;
Route::resource('posts', PostController::class);
Simpan.
Step #7 - Membuat Halaman View
Pada step terakhir ini, kita akan membuat beberapa file view menggunakan bootstrap.
Adapun halaman view yang akan kita buat adalah sebagai berikut:
- template.blade.php
- index,blade.php
- create.blade.php
- show.blade.php
- edit.blade.php
Mari kita langsung eksekusi,.. semangat ya...
Silahkan membuat file baru dengan nama template.blade.php di direktori resources/views
Kemudian ketik kdoe berikut ini
<!
DOCTYPE
html>
<
html
>
<
head
>
<
title
>Tutorial CRUD Laravel 8 untuk Pemula - Ilmucoding.com</
title
>
<
link
rel
=
"stylesheet"
href
=
"https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css"
>
</
head
>
<
body
>
<
div
class
=
"container"
>
@yield('content')
</
div
>
</
body
>
</
html
>
Kemudian buat folder baru di dalam views bernama posts, dan buat 4 file index.blade.php, create.blade.php, show.blade.php, dan edit.blade.php seperti di bawah ini:
index.blade.php
@extends('template')
@section('content')
<
div
class
=
"row mt-5 mb-5"
>
<
div
class
=
"col-lg-12 margin-tb"
>
<
div
class
=
"float-left"
>
<
h2
>Tutorial CRUD Laravel 8 untuk Pemula - Ilmucoding.com</
h2
>
</
div
>
<
div
class
=
"float-right"
>
<
a
class
=
"btn btn-success"
href
=
"{{ route('posts.create') }}"
> Create Post</
a
>
</
div
>
</
div
>
</
div
>
@if ($message = Session::get('success'))
<
div
class
=
"alert alert-success"
>
<
p
>{{ $message }}</
p
>
</
div
>
@endif
<
table
class
=
"table table-bordered"
>
<
tr
>
<
th
width
=
"20px"
class
=
"text-center"
>No</
th
>
<
th
>Title</
th
>
<
th
width
=
"280px"
class
=
"text-center"
>Action</
th
>
</
tr
>
@foreach ($posts as $post)
<
tr
>
<
td
class
=
"text-center"
>{{ ++$i }}</
td
>
<
td
>{{ $post->title }}</
td
>
<
td
class
=
"text-center"
>
<
form
action="{{ route('posts.destroy',$post->id) }}" method="POST">
<
a
class
=
"btn btn-info btn-sm"
href="{{ route('posts.show',$post->id) }}">Show</
a
>
<
a
class
=
"btn btn-primary btn-sm"
href="{{ route('posts.edit',$post->id) }}">Edit</
a
>
@csrf
@method('DELETE')
<
button
type
=
"submit"
class
=
"btn btn-danger btn-sm"
onclick
=
"return confirm('Apakah Anda yakin ingin menghapus data ini?')"
>Delete</
button
>
</
form
>
</
td
>
</
tr
>
@endforeach
</
table
>
{!! $posts->links() !!}
@endsection
create.blade.php
@extends('template')
@section('content')
<
div
class
=
"row mt-5 mb-5"
>
<
div
class
=
"col-lg-12 margin-tb"
>
<
div
class
=
"float-left"
>
<
h2
>Create New Post</
h2
>
</
div
>
<
div
class
=
"float-right"
>
<
a
class
=
"btn btn-secondary"
href
=
"{{ route('posts.index') }}"
> Back</
a
>
</
div
>
</
div
>
</
div
>
@if ($errors->any())
<
div
class
=
"alert alert-danger"
>
<
strong
>Whoops!</
strong
> There were some problems with your input.<
br
><
br
>
<
ul
>
@foreach ($errors->all() as $error)
<
li
>{{ $error }}</
li
>
@endforeach
</
ul
>
</
div
>
@endif
<
form
action
=
"{{ route('posts.store') }}"
method
=
"POST"
>
@csrf
<
div
class
=
"row"
>
<
div
class
=
"col-xs-12 col-sm-12 col-md-12"
>
<
div
class
=
"form-group"
>
<
strong
>Title:</
strong
>
<
input
type
=
"text"
name
=
"title"
class
=
"form-control"
placeholder
=
"Title"
>
</
div
>
</
div
>
<
div
class
=
"col-xs-12 col-sm-12 col-md-12"
>
<
div
class
=
"form-group"
>
<
strong
>Content:</
strong
>
<
textarea
class
=
"form-control"
style
=
"height:150px"
name
=
"content"
placeholder
=
"Content"
></
textarea
>
</
div
>
</
div
>
<
div
class
=
"col-xs-12 col-sm-12 col-md-12 text-center"
>
<
button
type
=
"submit"
class
=
"btn btn-primary"
>Submit</
button
>
</
div
>
</
div
>
</
form
>
@endsection
show.blade.php
@
extends
(
'template'
)
@section(
'content'
)
<div
class
=
"row mt-5 mb-5"
>
<div
class
=
"col-lg-12 margin-tb"
>
<div
class
=
"float-left"
>
<h2> Show Post</h2>
</div>
<div
class
=
"float-right"
>
<a
class
=
"btn btn-secondary"
href=
"{{ route('posts.index') }}"
> Back</a>
</div>
</div>
</div>
<div
class
=
"row"
>
<div
class
=
"col-xs-12 col-sm-12 col-md-12"
>
<div
class
=
"form-group"
>
<strong>Title:</strong>
{{
$post
->title }}
</div>
</div>
<div
class
=
"col-xs-12 col-sm-12 col-md-12"
>
<div
class
=
"form-group"
>
<strong>Content:</strong>
{{
$post
->content }}
</div>
</div>
</div>
@endsection
edit.blade.php
@extends('template')
@section('content')
<
div
class
=
"row mt-5 mb-5"
>
<
div
class
=
"col-lg-12 margin-tb"
>
<
div
class
=
"float-left"
>
<
h2
>Edit Post</
h2
>
</
div
>
<
div
class
=
"float-right"
>
<
a
class
=
"btn btn-secondary"
href
=
"{{ route('posts.index') }}"
> Back</
a
>
</
div
>
</
div
>
</
div
>
@if ($errors->any())
<
div
class
=
"alert alert-danger"
>
<
strong
>Whoops!</
strong
> There were some problems with your input.<
br
><
br
>
<
ul
>
@foreach ($errors->all() as $error)
<
li
>{{ $error }}</
li
>
@endforeach
</
ul
>
</
div
>
@endif
<
form
action="{{ route('posts.update',$post->id) }}" method="POST">
@csrf
@method('PUT')
<
div
class
=
"row"
>
<
div
class
=
"col-xs-12 col-sm-12 col-md-12"
>
<
div
class
=
"form-group"
>
<
strong
>Title:</
strong
>
<
input
type
=
"text"
name
=
"title"
value="{{ $post->title }}" class="form-control" placeholder="Title">
</
div
>
</
div
>
<
div
class
=
"col-xs-12 col-sm-12 col-md-12"
>
<
div
class
=
"form-group"
>
<
strong
>Content:</
strong
>
<
textarea
class
=
"form-control"
style
=
"height:150px"
name
=
"content"
placeholder
=
"Content"
>{{ $post->content }}</
textarea
>
</
div
>
</
div
>
<
div
class
=
"col-xs-12 col-sm-12 col-md-12 text-center"
>
<
button
type
=
"submit"
class
=
"btn btn-primary"
>Update</
button
>
</
div
>
</
div
>
</
form
>
@endsection
Step #8 - Testing Program
Masih sama dengan laravel versi sebelumnya, untuk menjalankan aplikasi kita harus menjalankan perintah di bawah ini di command:
php artisan serve
Kemudian buka di browser teman-teman dan ketik URL berikut:
http://127.0.0.1.8000/posts
Jika berhasil maka akan tampil halaman seperti ini:
Klik tombol Create Post, maka akan muncul halaman seperti di bawah ini
Silahkan teman-teman isi dengan judul dan content yang diinginkan, jika sudah, Klik tombol Submit. Dan untuk menampilkan Detail post bisa teman-teman klik tombol Show pada halaman index,
Hasilnya seperti di bawah ini
Terakhir, ini halaman edit:
Sekian tutorial dari kami tentang CRUD sederhana menggunakan Laravel 8 pada saat ini semoga bermanfaat bagi teman-teman dan tetap semangat terus untuk berlatih. Terima Kasih
Post a Comment