Belajar membuat modul crud di laravel 5

Welly Rosadi, Mochamad
Welly Rosadi, MochamadSelf-Employed Developer em Karedok Network

Artikel ini akan menjabarkan tentang bagaimana membuat modul crud sederhana dengan framework Laravel 5 (pada saat tulisan ini dibuat, yang digunakan versi 5.6). Yaitu bagaimana membuat modul untuk menginput informasi, menyimpan, mengedit, dan juga menghapusnya. Untuk keperluan ini, Laravel yang merupakan framework PHP MVC populer memiliki fitur bawaan yang mempermudah kita dalam membuat modul CRUD.

Belajar Membuat Modul CRUD di
Laravel 5
Source : http://karedok.net/teknologi/belajar-membuat-modul-crud-di-laravel-5
Shorturl : https://go.karedok.net/BelajarCRUD
Author : Welly Rosadi
welly@karedok.net
"Bagaimanapun, Jalani aja..."
oOo
1
Setelah beberapa waktu yang lalu kita sudah bisa menjalankan Laravel + Xampp di
Windows. Kali ini kita akan belajar memahami dasar pemrograman, yaitu CRUD alias
Create, Read, Update, Delete. Yaitu modul yang digunakan oleh sebuah aplikasi. Oleh
karena itu memahaminya bisa dibilang menjadi suatu keharusan.
Kita akan belajar membuat modul crud sederhana dengan framework Laravel 5 (pada saat
tulisan ini dibuat, yang digunakan versi 5.6). Yaitu bagaimana membuat modul untuk
menginput informasi, menyimpan, mengedit, dan juga menghapusnya. Untuk keperluan
ini, Laravel yang merupakan framework PHP MVC populer memiliki fitur bawaan yang
mempermudah kita dalam membuat modul CRUD.
Tahapan yang akan dilakukan yaitu:
1. Install Laravel
2. Konfigurasi database
3. Membuat file model, controller, dan migration
4. Konfigurasi file migration dan model
5. Menambahkan Route
6. Konfigurasi function Controller & Blade file
7. Menjalankan aplikasi
Install Laravel
composer create-project --prefer-dist laravel/laravel belajar-laravel
Ingat, sebelum menjalankan perintah ini pastikan sudah menginstall composer.
Konfigurasi Database
Buatkan dulu database MySQL, dan masukkan informasi databasenya ke dalam file .env .
Kalau belum ada, copy file .env.example dan beri nama file .env . Cari dan isikan bagian:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=nama_database
DB_USERNAME=username_mysql
DB_PASSWORD=password
Jangan lupa untuk merubah bagian DB_DATABASE, DB_USERNAME, DB_PASSWORD
sesuai konfigurasi masing-masing.
Membuat file Model, Controller, dan Migration
Kita akan membuat file model, controller, dan file migration dengan menjalankan perintah
berikut:
2
Model & Migration
php artisan make:model Post -m
Dengan tambahan -m Laravel juga akan membuat file migration selain membuat model.
Respon dibawah ini tanda kalau file model dan migration berhasil dibuat
Model created successfully.
Created Migration: 2018_04_21_043514_create_posts_table
Controller
php artisan make:controller PostController --resource --model=Post
Umumnya, file controller terdiri dari beberapa fungsi untuk menampilkan, menyimpan,
update, dan hapus data. Agar Laravel otomatis membuat bagian-bagian tersebut, kita
tambahkan --resource di perintahnya. Sedangkan --model=Post adalah perintah untuk
menghubungkan PostController dengan Model Post.
Sebenarnya kita bisa menjalankan kedua hal diatas dengan satu perintah, namun
terkadang kita hanya memerlukan sebuah controller tanpa perlu membuat model. Jadi
sekaligus saya menunjukkan bagaimana membuat controller tanpa perlu membuat model.
Konfigurasi file migration & model
Sekarang kita akan konfigurasi file migration, yaitu file yang berfungsi untuk membuat
table di database. Semua file migration disimpan di direktori database/migrations. Kita
akan edit file migration untuk model Post. Nama filenya bisa dilihat saat kita membuat file
model pada langkah sebelumnya, dalam tulisan ini berarti
2018_04_21_043514_create_posts_table.php . Edit sehingga menjadi seperti berikut
<?php
use IlluminateSupportFacadesSchema;
use IlluminateDatabaseSchemaBlueprint;
use IlluminateDatabaseMigrationsMigration;
class CreatePostsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up() { Schema::create('posts', function (Blueprint $table)
{
$table->increments('id');
$table->string('judul');
$table->text('isi');
$table->timestamps();
3
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('posts');
}
}
Kita jalankan migrate untuk membuat table di database.
php artisan migrate
Respon berikut menandakan Laravel berhasil membuat tabel di database:
Migration table created successfully.
Migrating: 2018_04_21_043514_create_posts_table
Migrated: 2018_04_21_043514_create_posts_table
Sekarang kita akan mengedit file modelnya. Secara default, file model terletak di direktori
app. Di langkah sebelumnya modelnya kita beri nama Post, kita akan cari file Post.php di
folder app. Edit file tersebut sehingga menjadi
<?php
namespace App;
use IlluminateDatabaseEloquentModel;
class Post extends Model
{
protected $fillable = [
'judul', 'isi'
];
}
Menambahkan Route
Pada tahap ini kita akan menambahkan route untuk post sehingga nanti kita bisa akses
konten post dengan url misalnya http://karedok.dev/post. Caranya dengan menambahkan
bari berikut di file routes/web.php .
Route::resource('post','PostController');
4
Konfigurasi CRUD: function Controller & Blade file
File controller secara default akan diletakkan di direktori app/Http/Controllers. Buka file
PostController.php, di dalamnya kita akan menemukan tujuh method yang sudah dibuat.
<?php
namespace AppHttpControllers;
use AppPost;
use IlluminateHttpRequest;
class PostController extends Controller
{
/**
* Display a listing of the resource.
*
* @return IlluminateHttpResponse
*/
public function index()
{
//
}
/**
* 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)
{
//
}
/**
* 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
*/
5
public function edit($id)
{
//
}
/**
* Update the specified resource in storage.
*
* @param IlluminateHttpRequest $request
* @param int $id
* @return IlluminateHttpResponse
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return IlluminateHttpResponse
*/
public function destroy($id)
{
//
}
}
Function dan View Untuk Menampilkan Daftar Post
Untuk membuat halaman yang menampilkan daftar post, kita akan melakukan edit di
bagian method index(). Sehingga bagian tersebut menjadi seperti berikut:
public function index()
{
$post = Post::latest()->paginate(5);
return view('post.index',compact('post'));
}
Penjelasan:
• Post::
membuka relasi ke class Post di dalam model
• latest()
untuk sortir daftar secara descending (yang terbaru tampilkan lebih dulu)
• paginate(angka)
membuat paging sesuai jumlah angka dalam kurung
Sekarang kita akan membuat file untuk menampilkan data. Secara bawaan, Laravel sudah
menyediakan template dengan bootstrap sebagai core css nya. Jadi, buat yang sudah
terbiasa menggunakan bootstrap, tidak akan kesulitan lagi. Untuk kesempatan kali ini kita
akan gunakan template bawaannya.
6
Secara default, semua view disimpan di resources/views. Untuk keperluan ini kita akan
membuat direktori dengan nama post. Sedangkan untuk bagian index(), kita akan
membuat file di dalam direktori Post dengan nama index.blade.php . Tentu saja bisa
menggunakan nama lain sesuai selera.
cd resources/views
mkdir post
touch post/index.blade.php
Oh iya, semua file yang digunakan untuk view harus ditambahkan .blade di belakang
namanya. Kenapa begitu? Ya, begitulah aturan dari Laravelnya. Hehehe...
Buka file index.blade.php dan isi seperti ini:
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row justify-content-center">
<div class="col-md-12">
@if ($pesan = Session::get('pesan'))
<div class="alert alert-success">
<p>{{ $pesan }}</p>
</div>
@endif
<div class="card">
<div class="card-body">
<div class="float-left">
<h2>Daftar Konten</h2>
</div>
<div class="float-right">
<a class="btn btn-primary" href="{{ route('post.create') }}"> Post
baru</a>
</div>
<table class="table table-striped">
<thead>
<tr>
<th>No.</th>
<th>Judul</th>
<th>Isi</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach($post as $k=>$data)
<tr>
<td>{{ $post->firstItem() + $k }}</td>
<td>{{ $data->judul }}</td>
<td>{{ str_limit($data->isi, $limit = 250, $end =
'...') }}</td>
<td>
<div class="btn-group" role="group">
7
<button id="aksiGroup" type="button" class="btn btn-
secondary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-
expanded="false">
Aksi
</button>
<div class="dropdown-menu" aria-labelledby="aksiGroup">
<a class="btn btn-info dropdown-item"
href="{{ route('post.show',$data->id) }}">Detail</a>
<a class="btn btn-warning dropdown-item"
href="{{ route('post.edit',$data->id) }}">Edit</a>
<form action="{{ route('post.destroy',$data->id) }}"
method="POST">
@csrf
@method('DELETE')
<input type="hidden" name="judul"
value="{{ $data->judul }}">
<button type="submit" class="btn btn-danger dropdown-
item">Hapus</button>
</form>
</div>
</div>
</td>
</tr>
@endforeach
</tbody>
</table>
{!! $post->links() !!}
</div>
</div>
</div>
</div>
@endsection
Funtion dan View Untuk Input Data
Langkahnya sama, kita buat controller nya terlebih dahulu baru kemudian view nya. Buka
kembali file PostController.php, kali ini kita akan mengedit bagian create() & store().
Pada bagian create(), edit sehingga menjadi seperti berikut:
public function create()
{
return view('post.create');
}
Untuk bagian store(), isinya menjadi seperti berikut:
public function store(Request $request)
{
request()->validate([
'judul' => 'required',
'isi' => 'required',
]);
Post::create($request->all());
8
$request->session()->flash('pesan','Post '.$request['judul'].' berhasil
disimpan.');
return redirect()->route('post.index');
}
request()->validate kita melakukan validasi formulir. Dalam contoh ini kita
memberikan required, yang artinya harus diisi.
Post::create($request-
>all());
Menyimpan data ke dalam database.
$request->session()-
>flash()
Membuat session sementara berisi pesan.
return redirect() Mengalihkan ke halaman index.
Buat sebuah file baru di direktori Post dan beri nama create.blade.php . Di dalamnya
isikan seperti berikut:
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row justify-content-center">
<div class="col-md-10">
<div class="card">
<div class="card-body">
<h2>Post baru</h2>
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
<form action="{{ route('post.store') }}" method="POST">
@csrf
<div class="form-group row">
<div class="col-md-12">
<strong>Judul:</strong>
<input type="text" name="judul" class="form-control"
placeholder="Judul">
</div>
</div>
<div class="form-group row">
<div class="col-md-12">
<strong>Isi:</strong>
<textarea class="form-control" rows="5" name="isi"
placeholder="Isi post"></textarea>
9
</div>
</div>
<div class="form-group row">
<div class="col-md-6">
<a href="{{ route('post.index') }}" class="btn btn-
secondary">Kembali</a>
</div>
<div class="col-md-6 text-right">
<button type="submit" class="btn btn-primary">Submit</button>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
@endsection
Function dan View untuk menampilkan detail
Pada bagian show($id) di controller, ubah menjadi berikut:
public function show(Post $post)
{
return view('post.show',compact('post'));
}
Buat file view dengan nama show.blade.php isikan dengan:
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row justify-content-center">
<div class="col-md-10">
<div class="card">
<div class="card-body">
<h2>{{ $post->judul }}</h2>
<p>{{ $post->isi }}</p>
<div class="form-group row">
<div class="col-md-6">
<a href="{{ route('post.index') }}" class="btn">Kembali</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
10
@endsection
Function dan View untuk melakukan edit
Pada bagian edit($id) ubah menjadi:
public function edit(Post $post)
{
return view('post.edit',compact('post'));
}
Pada bagian update($id) ubah menjadi:
public function update(Request $request, Post $post)
{
request()->validate([
'judul' => 'required',
'isi' => 'required',
]);
$post->update($request->all());
$request->session()->flash('pesan','Post '.$request['judul'].' berhasil
diperbarui.');
return redirect()->route('post.index');
}
Buat file baru, beri nama edit.blade.php dengan isi sebagai berikut:
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row justify-content-center">
<div class="col-md-10">
<div class="card">
<div class="card-body">
<h2>Edit Post</h2>
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
<form action="{{ route('post.update',$post->id) }}" method="POST">
@csrf
@method('PUT')
<div class="form-group row">
11
<div class="col-md-12">
<strong>Judul:</strong>
<input type="text" name="judul" class="form-control" value="{{
$post->judul }}">
</div>
</div>
<div class="form-group row">
<div class="col-md-12">
<strong>Isi:</strong>
<textarea class="form-control" rows="10" name="isi">{{ $post-
>isi }}</textarea>
</div>
</div>
<div class="form-group row">
<div class="col-md-6">
<a href="{{ route('post.index') }}" class="btn btn-
secondary">Kembali</a>
</div>
<div class="col-md-6 text-right">
<button type="submit" class="btn btn-primary">Submit</button>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
@endsection
Function dan View untuk menghapus data
Pada bagian destroy($id), ubah menjadi:
public function destroy(Request $request, Post $post)
{
$post->delete();
$request->session()->flash('pesan','Post '.$request['judul'].' berhasil
dihapus.');
return redirect()->route('post.index');
}
Jalankan Aplikasi
Sekarang, kita akan tes aplikasi CRUD sederhana yang sudah kita buat. Untuk membuka
halamannya. Misalkan dalam tulisan ini adalah http://karedok.dev/post . Kalau semua
konfigurasi sudah sesuai, maka akan tampil halaman berikut:
12
Selanjutnya kita akan coba membuat postingan pertama, dengan klik tombol Post baru
atau ke user /post/create. Tampilan halamannya seperti berikut:
Coba isi dan tekan tombol submit. Seharusnya sudah tampil di daftar post.
Buat sampai ada 6 post untuk melihat fungsi paging yang sudah dibuat. Fungsi lainnya
bisa dicoba untuk memastikan aplikasi berhasil dibuat.
Oh iya, tentu saja kita bisa memberikan autentikasi pada aplikasi ini jika memang
dibutuhkan. Caranya, kita akan bahas pada kesempatan lain.
Semoga bermanfaat dan selamat mencoba.
PDF: https://go.karedok.net/bljrCRUDpdf
Source Code: https://github.com/karedokNetwork/belajar_crud
oOo
13
Mochamad Welly Rosadi
Suami dari Erni Yunita, Ayah dari satu orang putra dan dua orang putri,
seorang biasa-biasa saja yang menyukai Travelling, Ikan Hias, Gadget
dan Teknologi. Lahir di Jakarta, besar di Tangerang, dan menuntaskan
pendidikan di Bandarlampung. Di kota yang disebutkan terakhirlah,
saya bertemu seseorang yang kemudian menjadi teman hidup.
Karedok.Net adalah refleksi dari kecintaan saya terhadap aktifitas menulis dan teknologi,
walaupun diselingi oleh tulisan sang Istri tentang pelajaran sekolah. Oret-oretan dalam
blog, merupakan catatan dari pengalaman sendiri, terjemahan bebas dari artikel
berbahasa asing, sekedar fork dari tulisan orang, dan juga sekedar melanjutkan tulisan
orang lain.
Selain menulis di Karedok.Net, saya juga salah satu Author di Tekmagz.ID, yaitu portal
informasi Teknologi dan Informasi. Sebuah portal informasi yang dibangun bersama
kawan-kawan semasa masih bekerja di Lazada Indonesia.
Untuk komunikasi bisa menghubungi via email ke welly@karedok.net atau bisa juga ke
facebook https://www.facebook.com/welly.rosadi kalau mau via twitter bisa ke
https://twitter.com/WellyRM
14

Recomendados

Modul pelatihan-django-dasar-possupi-v1 por
Modul pelatihan-django-dasar-possupi-v1Modul pelatihan-django-dasar-possupi-v1
Modul pelatihan-django-dasar-possupi-v1Ridwan Fadjar
4K visualizações30 slides
Jamal aplikasicrud por
Jamal aplikasicrudJamal aplikasicrud
Jamal aplikasicrudmales Aja
259 visualizações35 slides
Slide struktur codeigneter por
Slide struktur codeigneterSlide struktur codeigneter
Slide struktur codeigneterCecilia Cintahta
1K visualizações22 slides
Php module hierarchical por
Php module hierarchicalPhp module hierarchical
Php module hierarchicalWahyu Bimo
1.4K visualizações8 slides
Menggunakan database di android por
Menggunakan database di androidMenggunakan database di android
Menggunakan database di androidInto Setiawan
191 visualizações8 slides
7 langkah-membuat-modul-cms-lokomedia por
7 langkah-membuat-modul-cms-lokomedia7 langkah-membuat-modul-cms-lokomedia
7 langkah-membuat-modul-cms-lokomediadhedhedea
595 visualizações11 slides

Mais conteúdo relacionado

Mais procurados

Manipulasi database mysql dgn php por
Manipulasi database mysql dgn phpManipulasi database mysql dgn php
Manipulasi database mysql dgn phpHaswi Haswi
520 visualizações28 slides
Web Service Menggunakan Axis por
Web Service Menggunakan AxisWeb Service Menggunakan Axis
Web Service Menggunakan AxisBart Simpsons
747 visualizações6 slides
Membuat mvc framework sederhana dengan php por
Membuat mvc framework sederhana dengan phpMembuat mvc framework sederhana dengan php
Membuat mvc framework sederhana dengan phpCahya Dwiana SN
5K visualizações7 slides
Tugas 4 rekayasa web 1312510231 rostarina.h por
Tugas 4 rekayasa web 1312510231 rostarina.hTugas 4 rekayasa web 1312510231 rostarina.h
Tugas 4 rekayasa web 1312510231 rostarina.hosta92
106 visualizações11 slides
Codeigniter lanjut helper dan library por
Codeigniter lanjut helper dan libraryCodeigniter lanjut helper dan library
Codeigniter lanjut helper dan libraryboys of separato
3.1K visualizações26 slides
Web mvc dengan java jsp seri 1 por
Web mvc dengan java   jsp seri 1Web mvc dengan java   jsp seri 1
Web mvc dengan java jsp seri 1Zaenal Arifin
1.7K visualizações19 slides

Mais procurados(19)

Manipulasi database mysql dgn php por Haswi Haswi
Manipulasi database mysql dgn phpManipulasi database mysql dgn php
Manipulasi database mysql dgn php
Haswi Haswi520 visualizações
Web Service Menggunakan Axis por Bart Simpsons
Web Service Menggunakan AxisWeb Service Menggunakan Axis
Web Service Menggunakan Axis
Bart Simpsons747 visualizações
Membuat mvc framework sederhana dengan php por Cahya Dwiana SN
Membuat mvc framework sederhana dengan phpMembuat mvc framework sederhana dengan php
Membuat mvc framework sederhana dengan php
Cahya Dwiana SN5K visualizações
Tugas 4 rekayasa web 1312510231 rostarina.h por osta92
Tugas 4 rekayasa web 1312510231 rostarina.hTugas 4 rekayasa web 1312510231 rostarina.h
Tugas 4 rekayasa web 1312510231 rostarina.h
osta92106 visualizações
Codeigniter lanjut helper dan library por boys of separato
Codeigniter lanjut helper dan libraryCodeigniter lanjut helper dan library
Codeigniter lanjut helper dan library
boys of separato3.1K visualizações
Web mvc dengan java jsp seri 1 por Zaenal Arifin
Web mvc dengan java   jsp seri 1Web mvc dengan java   jsp seri 1
Web mvc dengan java jsp seri 1
Zaenal Arifin1.7K visualizações
Wawan tutorial-zend-bagian-4 por Haswi Haswi
Wawan tutorial-zend-bagian-4Wawan tutorial-zend-bagian-4
Wawan tutorial-zend-bagian-4
Haswi Haswi384 visualizações
Panduan lengkap php ajax j query por apriatin
Panduan lengkap php ajax j queryPanduan lengkap php ajax j query
Panduan lengkap php ajax j query
apriatin3.8K visualizações
Tutorial ci por Denish Anugra
Tutorial ciTutorial ci
Tutorial ci
Denish Anugra2.5K visualizações
Konsep View dan Blade dalam Laravel (Pemrograman Web II) por I Gede Iwan Sudipa
Konsep View dan Blade dalam Laravel (Pemrograman Web II)Konsep View dan Blade dalam Laravel (Pemrograman Web II)
Konsep View dan Blade dalam Laravel (Pemrograman Web II)
I Gede Iwan Sudipa72 visualizações
Dasar dasar-php-codeigniter por dicky prasetya
Dasar dasar-php-codeigniterDasar dasar-php-codeigniter
Dasar dasar-php-codeigniter
dicky prasetya3.1K visualizações
E commerce dengan php mysql.docx por Candra Adi Putra
E commerce dengan php mysql.docxE commerce dengan php mysql.docx
E commerce dengan php mysql.docx
Candra Adi Putra13.5K visualizações
test saja kok por nehakhus
test saja koktest saja kok
test saja kok
nehakhus738 visualizações
20 upload gambardenganphp por Devi Ramli
20 upload gambardenganphp20 upload gambardenganphp
20 upload gambardenganphp
Devi Ramli328 visualizações
Jsp por setyaway
JspJsp
Jsp
setyaway1.4K visualizações
Kolaborasi jQuery, AJAX, PHP, dan MySQL por I Putu Arya Dharmaadi
Kolaborasi jQuery, AJAX, PHP, dan MySQLKolaborasi jQuery, AJAX, PHP, dan MySQL
Kolaborasi jQuery, AJAX, PHP, dan MySQL
I Putu Arya Dharmaadi1.2K visualizações
Aplikasi JSP dengan netbeans por Jogal
Aplikasi JSP dengan netbeansAplikasi JSP dengan netbeans
Aplikasi JSP dengan netbeans
Jogal12.8K visualizações
Belajar php-dengan-framework-code-igniter por Muhammad Rais
Belajar php-dengan-framework-code-igniterBelajar php-dengan-framework-code-igniter
Belajar php-dengan-framework-code-igniter
Muhammad Rais3.5K visualizações
Java Server Pages por galihsatria
Java Server PagesJava Server Pages
Java Server Pages
galihsatria964 visualizações

Similar a Belajar membuat modul crud di laravel 5

Wawan tutorial-zend-bagian-1-3 por
Wawan tutorial-zend-bagian-1-3Wawan tutorial-zend-bagian-1-3
Wawan tutorial-zend-bagian-1-3Haswi Haswi
370 visualizações14 slides
Laravel 5 Tutorial : Membuat Blog Sederhana dengan Laravel 5.3 por
Laravel 5 Tutorial : Membuat Blog Sederhana dengan Laravel 5.3Laravel 5 Tutorial : Membuat Blog Sederhana dengan Laravel 5.3
Laravel 5 Tutorial : Membuat Blog Sederhana dengan Laravel 5.3harisonmtd
2.2K visualizações20 slides
Belajar pemrograman berbasis web php dhtmlx part 10 simple crud dhtmlx dan co... por
Belajar pemrograman berbasis web php dhtmlx part 10 simple crud dhtmlx dan co...Belajar pemrograman berbasis web php dhtmlx part 10 simple crud dhtmlx dan co...
Belajar pemrograman berbasis web php dhtmlx part 10 simple crud dhtmlx dan co...Tobing Manuppak
455 visualizações10 slides
Belajar php-dengan-framework-code-igniter1 por
Belajar php-dengan-framework-code-igniter1Belajar php-dengan-framework-code-igniter1
Belajar php-dengan-framework-code-igniter1Al-dhimas Purnama
572 visualizações16 slides
CRUD pada Android Studio menggunakan MySQL por
CRUD pada Android Studio menggunakan MySQLCRUD pada Android Studio menggunakan MySQL
CRUD pada Android Studio menggunakan MySQLLusiana Diyan
758 visualizações19 slides
Big Data Essentials With Hadoop por
Big Data Essentials With HadoopBig Data Essentials With Hadoop
Big Data Essentials With HadoopMochamad Khoiron
278 visualizações28 slides

Similar a Belajar membuat modul crud di laravel 5(20)

Wawan tutorial-zend-bagian-1-3 por Haswi Haswi
Wawan tutorial-zend-bagian-1-3Wawan tutorial-zend-bagian-1-3
Wawan tutorial-zend-bagian-1-3
Haswi Haswi370 visualizações
Laravel 5 Tutorial : Membuat Blog Sederhana dengan Laravel 5.3 por harisonmtd
Laravel 5 Tutorial : Membuat Blog Sederhana dengan Laravel 5.3Laravel 5 Tutorial : Membuat Blog Sederhana dengan Laravel 5.3
Laravel 5 Tutorial : Membuat Blog Sederhana dengan Laravel 5.3
harisonmtd2.2K visualizações
Belajar pemrograman berbasis web php dhtmlx part 10 simple crud dhtmlx dan co... por Tobing Manuppak
Belajar pemrograman berbasis web php dhtmlx part 10 simple crud dhtmlx dan co...Belajar pemrograman berbasis web php dhtmlx part 10 simple crud dhtmlx dan co...
Belajar pemrograman berbasis web php dhtmlx part 10 simple crud dhtmlx dan co...
Tobing Manuppak455 visualizações
Belajar php-dengan-framework-code-igniter1 por Al-dhimas Purnama
Belajar php-dengan-framework-code-igniter1Belajar php-dengan-framework-code-igniter1
Belajar php-dengan-framework-code-igniter1
Al-dhimas Purnama572 visualizações
CRUD pada Android Studio menggunakan MySQL por Lusiana Diyan
CRUD pada Android Studio menggunakan MySQLCRUD pada Android Studio menggunakan MySQL
CRUD pada Android Studio menggunakan MySQL
Lusiana Diyan758 visualizações
Big Data Essentials With Hadoop por Mochamad Khoiron
Big Data Essentials With HadoopBig Data Essentials With Hadoop
Big Data Essentials With Hadoop
Mochamad Khoiron278 visualizações
Langkah codeigniter multisite por kerang_hotmail
Langkah codeigniter multisiteLangkah codeigniter multisite
Langkah codeigniter multisite
kerang_hotmail1.4K visualizações
Resa ari siswo[1210652011], rico nilar hartono[1210652008] por resaarisiswo
Resa ari siswo[1210652011], rico nilar hartono[1210652008]Resa ari siswo[1210652011], rico nilar hartono[1210652008]
Resa ari siswo[1210652011], rico nilar hartono[1210652008]
resaarisiswo331 visualizações
Php CMS tutorial por Albertz Ace-Red
Php CMS tutorialPhp CMS tutorial
Php CMS tutorial
Albertz Ace-Red126 visualizações
Php tutorial-17 por Haswi Haswi
Php tutorial-17Php tutorial-17
Php tutorial-17
Haswi Haswi477 visualizações
Belajar Framework CodeIgnitier Lengkap (bahasa Indonesia) por riarel
Belajar Framework CodeIgnitier Lengkap (bahasa Indonesia)Belajar Framework CodeIgnitier Lengkap (bahasa Indonesia)
Belajar Framework CodeIgnitier Lengkap (bahasa Indonesia)
riarel888 visualizações
Php dgn frame work code ignitier por Haswi Haswi
Php dgn frame work code ignitierPhp dgn frame work code ignitier
Php dgn frame work code ignitier
Haswi Haswi394 visualizações
Belajar php-dengan-framework-code-igniter por George Kartutu
Belajar php-dengan-framework-code-igniterBelajar php-dengan-framework-code-igniter
Belajar php-dengan-framework-code-igniter
George Kartutu393 visualizações
Php dgn framework code ignitier por Albertz Ace-Red
Php dgn framework code ignitierPhp dgn framework code ignitier
Php dgn framework code ignitier
Albertz Ace-Red98 visualizações
Belajar php dengan framework code igniter3 por iimpunya3
Belajar php dengan framework code igniter3Belajar php dengan framework code igniter3
Belajar php dengan framework code igniter3
iimpunya3426 visualizações
Kelompok 7 por Rita Ajah
Kelompok 7Kelompok 7
Kelompok 7
Rita Ajah518 visualizações
Belajar pemrograman web menggunakan dhtmlx dan php part 4 galeri gambar & upl... por Tobing Manuppak
Belajar pemrograman web menggunakan dhtmlx dan php part 4 galeri gambar & upl...Belajar pemrograman web menggunakan dhtmlx dan php part 4 galeri gambar & upl...
Belajar pemrograman web menggunakan dhtmlx dan php part 4 galeri gambar & upl...
Tobing Manuppak534 visualizações
Tutorial ci por Wira Hul
Tutorial ciTutorial ci
Tutorial ci
Wira Hul459 visualizações
Belajar framework code igniter xii rpl por Denny Yahya
Belajar framework code igniter xii rplBelajar framework code igniter xii rpl
Belajar framework code igniter xii rpl
Denny Yahya332 visualizações
Mari belajar vue js por Teten Nugraha
Mari belajar vue jsMari belajar vue js
Mari belajar vue js
Teten Nugraha4.1K visualizações

Belajar membuat modul crud di laravel 5

  • 1. Belajar Membuat Modul CRUD di Laravel 5 Source : http://karedok.net/teknologi/belajar-membuat-modul-crud-di-laravel-5 Shorturl : https://go.karedok.net/BelajarCRUD Author : Welly Rosadi welly@karedok.net "Bagaimanapun, Jalani aja..." oOo 1
  • 2. Setelah beberapa waktu yang lalu kita sudah bisa menjalankan Laravel + Xampp di Windows. Kali ini kita akan belajar memahami dasar pemrograman, yaitu CRUD alias Create, Read, Update, Delete. Yaitu modul yang digunakan oleh sebuah aplikasi. Oleh karena itu memahaminya bisa dibilang menjadi suatu keharusan. Kita akan belajar membuat modul crud sederhana dengan framework Laravel 5 (pada saat tulisan ini dibuat, yang digunakan versi 5.6). Yaitu bagaimana membuat modul untuk menginput informasi, menyimpan, mengedit, dan juga menghapusnya. Untuk keperluan ini, Laravel yang merupakan framework PHP MVC populer memiliki fitur bawaan yang mempermudah kita dalam membuat modul CRUD. Tahapan yang akan dilakukan yaitu: 1. Install Laravel 2. Konfigurasi database 3. Membuat file model, controller, dan migration 4. Konfigurasi file migration dan model 5. Menambahkan Route 6. Konfigurasi function Controller & Blade file 7. Menjalankan aplikasi Install Laravel composer create-project --prefer-dist laravel/laravel belajar-laravel Ingat, sebelum menjalankan perintah ini pastikan sudah menginstall composer. Konfigurasi Database Buatkan dulu database MySQL, dan masukkan informasi databasenya ke dalam file .env . Kalau belum ada, copy file .env.example dan beri nama file .env . Cari dan isikan bagian: DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=nama_database DB_USERNAME=username_mysql DB_PASSWORD=password Jangan lupa untuk merubah bagian DB_DATABASE, DB_USERNAME, DB_PASSWORD sesuai konfigurasi masing-masing. Membuat file Model, Controller, dan Migration Kita akan membuat file model, controller, dan file migration dengan menjalankan perintah berikut: 2
  • 3. Model & Migration php artisan make:model Post -m Dengan tambahan -m Laravel juga akan membuat file migration selain membuat model. Respon dibawah ini tanda kalau file model dan migration berhasil dibuat Model created successfully. Created Migration: 2018_04_21_043514_create_posts_table Controller php artisan make:controller PostController --resource --model=Post Umumnya, file controller terdiri dari beberapa fungsi untuk menampilkan, menyimpan, update, dan hapus data. Agar Laravel otomatis membuat bagian-bagian tersebut, kita tambahkan --resource di perintahnya. Sedangkan --model=Post adalah perintah untuk menghubungkan PostController dengan Model Post. Sebenarnya kita bisa menjalankan kedua hal diatas dengan satu perintah, namun terkadang kita hanya memerlukan sebuah controller tanpa perlu membuat model. Jadi sekaligus saya menunjukkan bagaimana membuat controller tanpa perlu membuat model. Konfigurasi file migration & model Sekarang kita akan konfigurasi file migration, yaitu file yang berfungsi untuk membuat table di database. Semua file migration disimpan di direktori database/migrations. Kita akan edit file migration untuk model Post. Nama filenya bisa dilihat saat kita membuat file model pada langkah sebelumnya, dalam tulisan ini berarti 2018_04_21_043514_create_posts_table.php . Edit sehingga menjadi seperti berikut <?php use IlluminateSupportFacadesSchema; use IlluminateDatabaseSchemaBlueprint; use IlluminateDatabaseMigrationsMigration; class CreatePostsTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('posts', function (Blueprint $table) { $table->increments('id'); $table->string('judul'); $table->text('isi'); $table->timestamps(); 3
  • 4. }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('posts'); } } Kita jalankan migrate untuk membuat table di database. php artisan migrate Respon berikut menandakan Laravel berhasil membuat tabel di database: Migration table created successfully. Migrating: 2018_04_21_043514_create_posts_table Migrated: 2018_04_21_043514_create_posts_table Sekarang kita akan mengedit file modelnya. Secara default, file model terletak di direktori app. Di langkah sebelumnya modelnya kita beri nama Post, kita akan cari file Post.php di folder app. Edit file tersebut sehingga menjadi <?php namespace App; use IlluminateDatabaseEloquentModel; class Post extends Model { protected $fillable = [ 'judul', 'isi' ]; } Menambahkan Route Pada tahap ini kita akan menambahkan route untuk post sehingga nanti kita bisa akses konten post dengan url misalnya http://karedok.dev/post. Caranya dengan menambahkan bari berikut di file routes/web.php . Route::resource('post','PostController'); 4
  • 5. Konfigurasi CRUD: function Controller & Blade file File controller secara default akan diletakkan di direktori app/Http/Controllers. Buka file PostController.php, di dalamnya kita akan menemukan tujuh method yang sudah dibuat. <?php namespace AppHttpControllers; use AppPost; use IlluminateHttpRequest; class PostController extends Controller { /** * Display a listing of the resource. * * @return IlluminateHttpResponse */ public function index() { // } /** * 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) { // } /** * 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 */ 5
  • 6. public function edit($id) { // } /** * Update the specified resource in storage. * * @param IlluminateHttpRequest $request * @param int $id * @return IlluminateHttpResponse */ public function update(Request $request, $id) { // } /** * Remove the specified resource from storage. * * @param int $id * @return IlluminateHttpResponse */ public function destroy($id) { // } } Function dan View Untuk Menampilkan Daftar Post Untuk membuat halaman yang menampilkan daftar post, kita akan melakukan edit di bagian method index(). Sehingga bagian tersebut menjadi seperti berikut: public function index() { $post = Post::latest()->paginate(5); return view('post.index',compact('post')); } Penjelasan: • Post:: membuka relasi ke class Post di dalam model • latest() untuk sortir daftar secara descending (yang terbaru tampilkan lebih dulu) • paginate(angka) membuat paging sesuai jumlah angka dalam kurung Sekarang kita akan membuat file untuk menampilkan data. Secara bawaan, Laravel sudah menyediakan template dengan bootstrap sebagai core css nya. Jadi, buat yang sudah terbiasa menggunakan bootstrap, tidak akan kesulitan lagi. Untuk kesempatan kali ini kita akan gunakan template bawaannya. 6
  • 7. Secara default, semua view disimpan di resources/views. Untuk keperluan ini kita akan membuat direktori dengan nama post. Sedangkan untuk bagian index(), kita akan membuat file di dalam direktori Post dengan nama index.blade.php . Tentu saja bisa menggunakan nama lain sesuai selera. cd resources/views mkdir post touch post/index.blade.php Oh iya, semua file yang digunakan untuk view harus ditambahkan .blade di belakang namanya. Kenapa begitu? Ya, begitulah aturan dari Laravelnya. Hehehe... Buka file index.blade.php dan isi seperti ini: @extends('layouts.app') @section('content') <div class="container"> <div class="row justify-content-center"> <div class="col-md-12"> @if ($pesan = Session::get('pesan')) <div class="alert alert-success"> <p>{{ $pesan }}</p> </div> @endif <div class="card"> <div class="card-body"> <div class="float-left"> <h2>Daftar Konten</h2> </div> <div class="float-right"> <a class="btn btn-primary" href="{{ route('post.create') }}"> Post baru</a> </div> <table class="table table-striped"> <thead> <tr> <th>No.</th> <th>Judul</th> <th>Isi</th> <th></th> </tr> </thead> <tbody> @foreach($post as $k=>$data) <tr> <td>{{ $post->firstItem() + $k }}</td> <td>{{ $data->judul }}</td> <td>{{ str_limit($data->isi, $limit = 250, $end = '...') }}</td> <td> <div class="btn-group" role="group"> 7
  • 8. <button id="aksiGroup" type="button" class="btn btn- secondary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria- expanded="false"> Aksi </button> <div class="dropdown-menu" aria-labelledby="aksiGroup"> <a class="btn btn-info dropdown-item" href="{{ route('post.show',$data->id) }}">Detail</a> <a class="btn btn-warning dropdown-item" href="{{ route('post.edit',$data->id) }}">Edit</a> <form action="{{ route('post.destroy',$data->id) }}" method="POST"> @csrf @method('DELETE') <input type="hidden" name="judul" value="{{ $data->judul }}"> <button type="submit" class="btn btn-danger dropdown- item">Hapus</button> </form> </div> </div> </td> </tr> @endforeach </tbody> </table> {!! $post->links() !!} </div> </div> </div> </div> @endsection Funtion dan View Untuk Input Data Langkahnya sama, kita buat controller nya terlebih dahulu baru kemudian view nya. Buka kembali file PostController.php, kali ini kita akan mengedit bagian create() & store(). Pada bagian create(), edit sehingga menjadi seperti berikut: public function create() { return view('post.create'); } Untuk bagian store(), isinya menjadi seperti berikut: public function store(Request $request) { request()->validate([ 'judul' => 'required', 'isi' => 'required', ]); Post::create($request->all()); 8
  • 9. $request->session()->flash('pesan','Post '.$request['judul'].' berhasil disimpan.'); return redirect()->route('post.index'); } request()->validate kita melakukan validasi formulir. Dalam contoh ini kita memberikan required, yang artinya harus diisi. Post::create($request- >all()); Menyimpan data ke dalam database. $request->session()- >flash() Membuat session sementara berisi pesan. return redirect() Mengalihkan ke halaman index. Buat sebuah file baru di direktori Post dan beri nama create.blade.php . Di dalamnya isikan seperti berikut: @extends('layouts.app') @section('content') <div class="container"> <div class="row justify-content-center"> <div class="col-md-10"> <div class="card"> <div class="card-body"> <h2>Post baru</h2> @if ($errors->any()) <div class="alert alert-danger"> <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif <form action="{{ route('post.store') }}" method="POST"> @csrf <div class="form-group row"> <div class="col-md-12"> <strong>Judul:</strong> <input type="text" name="judul" class="form-control" placeholder="Judul"> </div> </div> <div class="form-group row"> <div class="col-md-12"> <strong>Isi:</strong> <textarea class="form-control" rows="5" name="isi" placeholder="Isi post"></textarea> 9
  • 10. </div> </div> <div class="form-group row"> <div class="col-md-6"> <a href="{{ route('post.index') }}" class="btn btn- secondary">Kembali</a> </div> <div class="col-md-6 text-right"> <button type="submit" class="btn btn-primary">Submit</button> </div> </div> </div> </form> </div> </div> </div> </div> </div> @endsection Function dan View untuk menampilkan detail Pada bagian show($id) di controller, ubah menjadi berikut: public function show(Post $post) { return view('post.show',compact('post')); } Buat file view dengan nama show.blade.php isikan dengan: @extends('layouts.app') @section('content') <div class="container"> <div class="row justify-content-center"> <div class="col-md-10"> <div class="card"> <div class="card-body"> <h2>{{ $post->judul }}</h2> <p>{{ $post->isi }}</p> <div class="form-group row"> <div class="col-md-6"> <a href="{{ route('post.index') }}" class="btn">Kembali</a> </div> </div> </div> </div> </div> </div> </div> 10
  • 11. @endsection Function dan View untuk melakukan edit Pada bagian edit($id) ubah menjadi: public function edit(Post $post) { return view('post.edit',compact('post')); } Pada bagian update($id) ubah menjadi: public function update(Request $request, Post $post) { request()->validate([ 'judul' => 'required', 'isi' => 'required', ]); $post->update($request->all()); $request->session()->flash('pesan','Post '.$request['judul'].' berhasil diperbarui.'); return redirect()->route('post.index'); } Buat file baru, beri nama edit.blade.php dengan isi sebagai berikut: @extends('layouts.app') @section('content') <div class="container"> <div class="row justify-content-center"> <div class="col-md-10"> <div class="card"> <div class="card-body"> <h2>Edit Post</h2> @if ($errors->any()) <div class="alert alert-danger"> <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif <form action="{{ route('post.update',$post->id) }}" method="POST"> @csrf @method('PUT') <div class="form-group row"> 11
  • 12. <div class="col-md-12"> <strong>Judul:</strong> <input type="text" name="judul" class="form-control" value="{{ $post->judul }}"> </div> </div> <div class="form-group row"> <div class="col-md-12"> <strong>Isi:</strong> <textarea class="form-control" rows="10" name="isi">{{ $post- >isi }}</textarea> </div> </div> <div class="form-group row"> <div class="col-md-6"> <a href="{{ route('post.index') }}" class="btn btn- secondary">Kembali</a> </div> <div class="col-md-6 text-right"> <button type="submit" class="btn btn-primary">Submit</button> </div> </div> </div> </form> </div> </div> </div> </div> </div> @endsection Function dan View untuk menghapus data Pada bagian destroy($id), ubah menjadi: public function destroy(Request $request, Post $post) { $post->delete(); $request->session()->flash('pesan','Post '.$request['judul'].' berhasil dihapus.'); return redirect()->route('post.index'); } Jalankan Aplikasi Sekarang, kita akan tes aplikasi CRUD sederhana yang sudah kita buat. Untuk membuka halamannya. Misalkan dalam tulisan ini adalah http://karedok.dev/post . Kalau semua konfigurasi sudah sesuai, maka akan tampil halaman berikut: 12
  • 13. Selanjutnya kita akan coba membuat postingan pertama, dengan klik tombol Post baru atau ke user /post/create. Tampilan halamannya seperti berikut: Coba isi dan tekan tombol submit. Seharusnya sudah tampil di daftar post. Buat sampai ada 6 post untuk melihat fungsi paging yang sudah dibuat. Fungsi lainnya bisa dicoba untuk memastikan aplikasi berhasil dibuat. Oh iya, tentu saja kita bisa memberikan autentikasi pada aplikasi ini jika memang dibutuhkan. Caranya, kita akan bahas pada kesempatan lain. Semoga bermanfaat dan selamat mencoba. PDF: https://go.karedok.net/bljrCRUDpdf Source Code: https://github.com/karedokNetwork/belajar_crud oOo 13
  • 14. Mochamad Welly Rosadi Suami dari Erni Yunita, Ayah dari satu orang putra dan dua orang putri, seorang biasa-biasa saja yang menyukai Travelling, Ikan Hias, Gadget dan Teknologi. Lahir di Jakarta, besar di Tangerang, dan menuntaskan pendidikan di Bandarlampung. Di kota yang disebutkan terakhirlah, saya bertemu seseorang yang kemudian menjadi teman hidup. Karedok.Net adalah refleksi dari kecintaan saya terhadap aktifitas menulis dan teknologi, walaupun diselingi oleh tulisan sang Istri tentang pelajaran sekolah. Oret-oretan dalam blog, merupakan catatan dari pengalaman sendiri, terjemahan bebas dari artikel berbahasa asing, sekedar fork dari tulisan orang, dan juga sekedar melanjutkan tulisan orang lain. Selain menulis di Karedok.Net, saya juga salah satu Author di Tekmagz.ID, yaitu portal informasi Teknologi dan Informasi. Sebuah portal informasi yang dibangun bersama kawan-kawan semasa masih bekerja di Lazada Indonesia. Untuk komunikasi bisa menghubungi via email ke welly@karedok.net atau bisa juga ke facebook https://www.facebook.com/welly.rosadi kalau mau via twitter bisa ke https://twitter.com/WellyRM 14