project aplikasi. Dan laravel membantu membuat proses operasi CRUD menjadi lebih mudah
dengan menggunakan controller. Dengan controller dan penggunaan teknik RESTful pada
routing laravel telah memberikan kemudahan pada pengembang project. Kali ini kita akan
mencoba membuat operasi CRUD sederhana dengan menggunakan RESTful pada Laravel 5.
Ikuti setiap langkahnya.
Buat project baru. Bagi pengguna baru Laravel 5 bisa baca kembali Tutorial Instalasi Laravel 5.
Lakukan konfigurasi database pada file database.php di config/database.php, atau pada file
.env folder project. (tutorial menggunakan database MySQL)
config/database.php
'mysql' => [
'driver'
'host'
'database'
'username'
'password'
'charset'
'collation'
'prefix'
'strict'
=>
=>
=>
=>
=>
=>
=>
=>
=>
'mysql',
env('DB_HOST', 'localhost'),
env('DB_DATABASE', 'laraveldb'),
env('DB_USERNAME', 'root'),
env('DB_PASSWORD', ''),
'utf8',
'utf8_unicode_ci',
'',
false,
],
Untuk membuat tabel Anda dapat langsung membuatnya menggunakan DBMS atau dengan
migration yang disediakan laravel.
Buka terminal atau command prompt (cmd) dan buat migration dengan perintah php artisan
make:migration create_pegawai_table --create=pegawai
$table->string('email', 255);
$table->integer('level');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('pegawai');
}
}
Sekarang buka terminal/command prompt lagi dan jalankan perintah php artisan migrate.
Kemudian lihat kembali database yang telah dibuat sebelumnya, maka akan ada tabel baru yang
siap digunakan.
Baca dokumentasi lengkapnya tentang migrations di Laravel docs Migration & Seeding
Buat Project Model
Buka terminal/command prompt dan jalankan perintah php artisan make:model Pegawai
Dan class baru akan dibuat di app/Pegawai.php
app/Pegawai.php
<?php namespace App;
use Illuminate\Database\Eloquent\Model;
class Pegawai extends Model {
//
}
Anda bisa membaca dokumentasi lengkap mengenai Model di Laravel docs Eloquent ORM
Buat project Controller
Buka terminal/cmd jalankan perintah berikut php artisan make:controller
PegawaiController
use Illuminate\Http\Request;
class PegawaiController extends Controller {
/**
* Display a listing of the resource.
*
* @return Response
*/
public function index()
{
//
}
/**
* Show the form for creating a new resource.
*
* @return Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @return Response
*/
public function store()
{
//
}
/**
* Display the specified resource.
*
* @param int $id
* @return Response
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return Response
*/
public function edit($id)
{
//
}
/**
Untuk melihat hasil routes yang telah dibuat yang ada pada project Anda dapat menjalankan
perintah php artisan route:list di terminal/command prompt.
Anda dapat membaca dokumentasi lengkapnya di Larave docs HTTP Controllers
Sekarang kita beralih ke layout.
Lakukan terlebih dahulu konfigurasi untuk html dan form. Karena project kali ini kita akan
membuat Create dan Update dengan memanfaatkan penggunaan form.
Untuk yang belum pernah melakukan konfigurasi html dan form Anda bisa membacanya di
artikel Konfgurasi Html Pada Laravel 5 dan Anda bisa langsung mempraktekannya dengan
mengikuti langkah-langkahnya.
Buat layout untuk project
Masuk ke direktori resources/view dan buat folder baru includes dan buat file
header.blade.php isi dengan code berikut:
resources/view/includes/header.blade.php
<div class="container">
Buat lagi folder baru layouts dan buat file master.blade.php isi dengan code berikut:
resources/view/layouts/master.blade.php
<!DOCTYPE html>
<html lang="en">
<head>
<title>Belajar CRUD</title>
<link rel="stylesheet"
href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css">
</head>
<body>
@include('includes.header')
<!-- /.navbar-collapse -->
<!-- Page Heading -->
@yield('content')
<!-- /.row -->
</body>
</html>
Buat folder baru pegawai di resources/views dan buat file index.blade.php isikan code
berikut:
resources/views/pegawai/index.blade.php
@extends('layouts.master')
@section('content')
<div class="row">
<div class="col-lg-12">
<h1>Daftar Pegawai</h1>
<!-- digunakan untuk menampilkan pesan -->
@if (Session::has('message'))
<div class="alert alert-info">{{ Session::get('message') }}</div>
@endif
<table class="table table-striped table-bordered">
<thead>
<tr>
<td>ID</td>
<td>Nama</td>
<td>Email</td>
<td>Level</td>
<td>Actions</td>
</tr>
</thead>
<tbody>
@foreach($pegawai as $key => $value)
<tr>
<td>{{ $value->id }}</td>
<td>{{ $value->nama }}</td>
<td>{{ $value->email }}</td>
<td>{{ $value->level }}</td>
<!-- untuk menambahkan tombol tampil, edit, dan hapus -->
<td>
<a class="btn btn-small btn-success" href="{{ URL('pegawai/'
. $value->id) }}">Tampilkan Data</a>
<a class="btn btn-small btn-warning" href="{{ URL('pegawai/'
. $value->id . '/edit') }}">Ubah Data</a>
{!! Form::open(['url' => 'pegawai/' . $value->id, 'class' =>
'pull-right']) !!}
{!! Form::hidden('_method', 'DELETE') !!}
{!! Form::submit('Hapus Data', ['class' => 'btn btndanger']) !!}
{!! Form::close() !!}
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
@stop
Fungsi create ini akan menampilkan form yang akan digunakan untuk membuat data pegawai
baru yang kemudian dari form ini akan diproses pada store() method.
Buat file baru create.blade.php pada folder pegawai dan isi code menjadi seperti berikut:
resources/views/pegawai/create.blade.php
@extends('layouts.master')
@section('content')
<div class="row">
<div class="col-lg-12">
<h1>Buat Data Baru</h1>
<!-- jika terjadi error, maka akan menampilkan pesan -->
@if ($errors->any())
<ul class="alert alert-danger">
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
@endif
{!! Form::open(['url' => 'pegawai']) !!}
<div class="form-group">
{!! Form::label('nama', 'Nama') !!}
{!! Form::text('nama', null, ['class' => 'form-control',
'placeholder' => 'masukan nama']) !!}
</div>
<div class="form-group">
{!! Form::label('email', 'Email') !!}
{!! Form::email('email', null, ['class' => 'form-control',
'placeholder' => 'masukan email']) !!}
</div>
<div class="form-group">
Pada store() method kita akan membuatnya untuk melakukan validasi input data yang kita
masukan dan mengirim pesan error apabila form tidak diisi atau tidak sesuai.
Buat file class CreatePegawaiRequest.php di Request, file ini yang nantinya akan dipanggil
pada store() method untuk melakukan validasi dan mengirim pesan error.
app/Http/Requests/CreatePegawaiRequest.php
<?php namespace App\Http\Requests;
use App\Http\Requests\Request;
class CreatePegawaiRequest extends Request {
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'nama'
=> 'required',
'email'
=> 'required|email',
'level'
=> 'required|numeric'
];
}
public function messages()
{
return [
'nama.required' => 'Kolom nama harus diisi',
'email.required' => 'Kolom email belum diisi',
'email.email'
=> 'Email tidak sesuai',
Buat file baru show.blade.php di folder pegawai isi code seperti berikut:
resources/views/pegawai/show.blade.php
@extends('layouts.master')
@section('content')
<div class="row">
<div class="col-lg-12">
<h1>Tampilkan Data Pegawai</h1>
<div class="jumbotron text-center">
<h2>{{ $pegawai->nama }}</h2>
<p>
<strong>Email :</strong> {{ $pegawai->email }}<br>
<strong>Level :</strong> {{ $pegawai->level }}
</p>
</div>
</div>
</div>
@stop
/**
* Update the specified resource in storage.
*
* @param int $id
* @return Response
*/
public function update($id)
{
$pegawaiUpdate = Request::all();
$pegawai = Pegawai::find($id);
$pegawai->update($pegawaiUpdate);
return redirect('pegawai')->with('message', 'Data berhasil
dirubah!');
}
...
Selesai.
Buka terminal/command prompt(cmd) jalankan perintah php artisan serve, lakukan
penambahan data, edit data, hapus data untuk melakukan testing pada project CRUD yang baru
saja dibuat.