You are on page 1of 81

Membuat CRUD Laravel Part I

Pada tulisan sebelumnya saya telah membahas beberapa hal

sebagai berikut:

 Laravel : A Framework for web Artisans

 Membuat Hello World di Laravel.

 Cara menggunakan “migration” pada Laravel

 Cara melakukan seeding pada Laravel

Setelah anda membaca tentang apa itu Laravel, cara membuat

„Hello World‟, migration dan seeding, Kali ini, kita akan membahas

mengenai cara membuat aplikasi CRUD sederhana dengan

menggunakan Laravel. Artikel kali ini dibuat sesederhana yang

saya bisa, sehingga mudah dipelajari oleh pemula sekalipun.

Twitter Bootstrap

Untuk membuat user interface, kita akan menggunakan bantuan

Twitter Bootstrap. Untuk itu, silahkan unduh terlebih dahulu

disini. Kemudian extract hasil unduhan anda. Setelah di-extract

akan menemukan tiga folder didalamnya yaitu folder css, fonts dan

js. Copy ketiga folder tersebut ke dalam direktori `public`-nya

Laravel.
Bootstrap di dalam direktori publik laravel

Setelah Twitter Bootstrap anda pindahkan ke direktori public,

berarti sudah siap untuk digunakan pada aplikasi Laravel yang

akan kita buat. Oleh karena itu, marilah kita lupakan sejenak

mengenai Twitter Bootstrap ini dan memulai langkah selanjutnya.

Database Tabel

Sekarang, marilah kita membuat sebuah tabel baru untuk

menampung data yang akan kita gunakan dalam tutorial kali ini.

Misalnya, tabel tersebut akan menampung data-data buku yang

akan dijual. Dengan menggunakan command-line, jalankan

perintah php artisan migrate:make create_books_table. Maka, secara

otomatis akan tercipta sebuah file baru pada direktori

app/database/migrations. Buat definisi tabel sebagai berikut pada

file migrasi tersebut:


//--------------------------------------------------------

-----------------------------------------------------//

<?php use Illuminate\Database\Migrations\Migration;

class CreateBooksTable extends Migration {

public function up() {

Schema::create('books', function($table){

$table->increments('id');

$table->string('title')->unique();

$table->string('author');

$table->string('description');

$table->string('price');

$table->timestamps();

});

public function down()

Schema::drop('books');

}
}

?>

Lalu jalankan perintah php artisan migrate melalui command-

line. Maka secara otomatis akan tercipta sebuah tabel baru bernama

`books`, anda bisa melihatnya melalui phpmyadmin.

CRUD

CRUD merupakan singkatan dari Create, Read, Update dan Delete.

Untuk itu mari kita bahas satu persatu mulai dari Create

(memasukan data ke dalam database).

Create

Untuk memasukan data ke dalam database kita akan menggunakan

sebuah form. Pertama-tama, buat sebuah file baru pada direktori

app/views/ dengan nama layout.blade.php. Kemudian, pada file

tersebut, buat layout HTML sebagai berikut:

<!DOCTYPE html>

<html lang='en'>

<head>

<meta charset='utf-8' />

<title>CRUD App</title>
<meta name='viewport' content='width=device-width, initial-

scale=1, maximum-scale=1' />

{{ HTML::style('css/bootstrap.min.css') }}

</head>;

<body>

@yield('content')

{{ HTML::script('js/jquery.min.js') }}

{{ HTML::script('js/bootstrap.js') }}

</body>

</html>

Perhatikan bahwa Laravel menggunakan Blade sebagai templating

engine. Apabila anda masih belum mengerti tentang Blade, tidak

masalah. Blade adalah sesuatu yang mudah, anda akan mengerti

setelah menyelesaikan tutorial ini.

Selanjutnya, masih pada folder app/views, buat sebuah file baru

bernama newbook.blade.php:
@extends('layout')

@section('content')

Hello, Semua form akan ditempatkan disini!

@stop

File inilah yang nantinya akan digunakan untuk menampilkan

form yang akan kita buat pada browser. Pada file tersebut anda

tidak perlu menulis lagi tag `html`, `title` , `body` karena sudah di-

extends dari file layout.blade.php dengan menggunakan

@extends('layout'). Semua yang akan ditampilkan di browser bisa

anda simpan diantara @section('content') dan @stop.

Selanjutnya, tambahkan definisi form pada file tersebut:

@extends('layout')

@section('content')

<div class='container'>
<h3>Insert new book</h3>

{{ Form::open()}}

{{Form::label('title', 'Title') }}

{{Form::text('title', '', array('class' => 'form-control'))}}

{{Form::label('author', 'Author') }}

{{Form::text('author', '', array('class' => 'form-control'))}}

{{Form::label('description', 'Description') }}

{{Form::textarea('description', '', array('class' => 'form-control'))}}

{{Form::label('price', 'Price') }}

{{Form::text('price', '', array('class' => 'form-control'))}}

{{Form::submit('Submit', array('class' => 'btn btn-primary')) }}

{{ Form::close() }}
</div>

@stop

Lalu, buat sebuah route pada file app/routes.php :

Route::get('newbook', function()

return View::make('newbook');

});

Akses route tersebut melalui browser, maka akan tampil form seperti

berikut ini:
Memasukan data ke database

Selanjutnya, mari kita buat Model dan Controller untuk

memasukan data diinputkan ke dalam database. Buat sebuah file

dengan nama Book.php pada direktori app/models:

<?php class Book extends Eloquent { } ?>

Harus diperhatikan bahwa nama class perlu disesuaikan dengan

nama tabel yang digunakan, karena pada contoh kali ini kita

menggunakan tabel bernama books, maka nama class yang dibuat

haruslah Book. Seperti halnya pada Model User, karena nama

tabelnya users. Sebenarnya, anda juga bisa menentukan nama


Model sesuka hati. Namun, caranya tidak akan dibahas pada

tulisan ini. Mungkin lain kali akan saya bahas.

Ok, setelah Model anda buat, selanjutnya mari kita buat controller.

Pada direktori app/controllers buatlah sebuah file baru dengan

nama BookController.php :

<?php

class BookController extends BaseController {

?>

Setelah itu, buat fungsi untuk memasukan data buku baru ke

dalam database:

<?php

class BookController extends BaseController {

public function store(){


$book = new Book;

$book->title = Input::get('title');;

$book->author = Input::get('author');;

$book->description = Input::get('description');;

$book->price = Input::get('price');;

$book->save();

?>

Bagian Terakhir

Ok, setelah Model dan Controller dibuat, langkah selanjutnya yang

harus dilakukan adalah membuat route baru yang mengarah

kepada fungsi yang kita buat di dalam Controller. Buka routes.php,

tambahkan route sebagai berikut:


Route::post('book/insert', 'BookController@store');

Kemudian pada file app/views/newbook.blade.php ubah {{

Form::open() }} menjadi {{ Form::open(array('action' =>

'BookController@store')) }}. Dimana „BookController@store‟

disesuaikan dengan nama Controller dan Action yang kita tuju.

Selesai. Anda sekarang bisa mencobanya dengan memasukan data

pada form kemudian tekan tombol submit. Lalu, cek di database

apakah data yang diinputkan sudah masuk.

Konklusi

Diatas kita telah membahas mengenai membuat Create

menggunakan Laravel. Yaitu dengan cara membuat Model,

Kemudian membuat View yang bisa mengirim data melalui form,

data pada form tersebut kemudian dikirim ke controller untuk

disimpan ke dalam database dengan menggunakan Class Model

yang telah dibuat. Selanjutnya, pada Part 2 kita akan membahas

mengenai cara menampilkan data (Read).

Membuat CRUD Sederhana pada Laravel : Part 2


Sebelumnya kita telah membahas cara memasukan data ke dalam

database dengan menggunakan Laravel (Create). Kali ini kita akan

membahas tentang cara menampilkan data dari database. Ada tiga

tahapan yang akan dilakukan yaitu:

 Membuat route.

 Mengirim data ke view.

 Membuat looping.

Pertama-tama marilah kita membuat sebuah route baru sebagai

berikut:

Route::get('booklist', function(){

});

Setelah itu, kita akan mengambil semua data dari tabel books yang

telah kita buat sebelumnya. Ingat, untuk mengakses tabel books kita

akan menggunakan Model bernama Book. Untuk melakukannya

tambahkan Book::all() pada route yang telah kita buat:

Route::get('booklist', function(){
$books = Book::all();

});

Setelah itu, kita akan memanggil sebuah view sekaligus mengirim

variable $books ke view tersebut.

Route::get('booklist', function(){

$books = Book::all();

return View::make('listbook')->with('booksdata', $books);

});

Jika, anda mengakses route tersebut, bisa dipastikan sebuah pesan

error akan muncul. Itu karena view bernama listbook masih belum

kita buat. Oleh karena itu, mari kita buat view tersebut. Buat

sebuah file baru bernama listbook.blade.php  Sebagai berikut:


@extends('layout')

@section('content')

<!-- data akan ditampilkan disini -->

@stop

Pada route, kita telah mengirimkan sebuah variable bernama

booksdata yang bisa diakses melalui view. Variable tersebut bersisi

semua data dari tabel books yang bisa kita tampilkan dengan

bantuan looping :

@extends('layout')

@section('content')

<section class="container">

<table class="table">

<tr>

<th>Title</th>

<th>Author</th>

<th>Description</th>

<th>Price</th>
</tr>

@foreach($booksdata as $book)

<tr>

<td>{{ $book->title }}</td>

<td>{{ $book->author }}</td>

<td>{{ $book->description }}</td>

<td>{{ $book->price }}</td>

</tr>

@endforeach

</table>

</section>

@stop

Jika anda perhatikan pada code diatas, kita menggunakan {{

$book->title }} untuk judul buku, {{ $book->author }} untuk

pengarang dsb. Syntax yang digunakan yaitu blade, dimana {{

$book->title }} bisa disamakan dengan <?php echo $book->title; ?> .

Sekarang, anda bisa buka route „booklist‟ melalui browser, maka

semua data yang berada pada table „books‟ akan ditampilkan

dalam bentuk table. Cara akses route tersebut misal:


http://lrv.dev/booklist

Atau jika anda menggunakan domain „localhost‟ :

http://localhost/booklist

Kita telah membahas mengenai Create dan Read. Pada bagian

selanjutnya, kita akan membahas mengenai Update.

Bersambung

Membuat CRUD sederhana pada Laravel : Part 3

Pada Tulisan sebelumnya kita telah membahas tentang Create dan

Read. Sekarang, mari kita melangkah ke tahap selanjutnya, yaitu

Update. Pertama-tama, kita akan menampilkan link edit pada

tabel yang telah kita buat sebelumnya ketika menampilkan data.

Ubah file listbook.blade.php menjadi sebagai berikut:

@extends('layout')
@section('content')

<section class="container">

<table class="table">

<tr>

<th>Title</th>

<th>Author</th>

<th>Description</th>

<th>Price</th>

<th>#</th>

</tr>

@foreach($booksdata as $book)

<tr>

<td>{{ $book->title }}</td>

<td>{{ $book->author }}</td>

<td>{{ $book->description }}</td>

<td>{{ $book->price }}</td>

<td>{{ link_to_action('BookController@edit', 'edit', array($book-

>id))}}</td>

</tr>

@endforeach

</table>

</section>

@stop
Pada kode diatas, kita menambahkan link_to_action yang

merupakan helper untuk membuat HTML link. Dimana, link

tersebut akan mengarah ke method edit pada controller bernama

BookController. Jika anda jalankan di browser (dengan membuka

route booklist), maka akan muncul error sebagai berikut:

ErrorException

Route [BookController@edit] not defined. (View:

/var/www/laravel/app/views/listbook.blade.php)

Error tersebut muncul karena kita belum membuat route yang

mengarah ke method tersebut, disamping method itu sendiri belum

kita buat. Untuk itu, tambahkan route sebagai berikut

pada file routes.php :

Route::get('book/edit/{id}', 'BookController@edit');

Kemudian, tambahkan action “edit” pada BookController:

public function edit($id)

# code...

Jika, anda klik pada salah satu link yang ditampilkan pada

tabel, maka akan muncul halaman kosong pada browser. Untuk

mengubah halaman kosong tersebut menjadi halaman edit, ubah


fungsi edit yang barusan kita tambahkan menjadi sebagai

berikut:

public function edit($id)

$book = Book::find($id);

return View::make('editbook')->with('book', $book);

Jika, anda jalankan lagi maka kali ini bukan halaman kosong

yang anda dapatkan, tetapi anda akan melihat error sebagai

berikut:

InvalidArgumentException

View [editbook] not found.

Ini dikarenakan kita belum membuat view

bernama editbook. Untuk itu, pada folder app/views

buatlah file baru dengan nama editbook.blade.php :

@extends('layout')

@section('content')

<div class='container'>

<h3>Edit book</h3>
{{ Form::open() }}

{{Form::hidden('id', $book->id)}}

{{Form::label('title', 'Title') }}

{{Form::text('title', $book->title , array('class' => 'form-control'))}}

{{Form::label('author', 'Author') }}

{{Form::text('author', $book->author , array('class' => 'form-

control'))}}

{{Form::label('description', 'Description') }}

{{Form::textarea('description', $book->description , array('class' =>

'form-control'))}}

{{Form::label('price', 'Price') }}

{{Form::text('price', $book->price , array('class' => 'form-control'))}}

{{Form::submit('Update', array('class' => 'btn btn-primary')) }}


{{ Form::close() }}

</div>

@stop

Reload halaman yang menampilkan error tersebut dan anda akan

melihat form edit beserta nilai dari masing-masing field.

Update

Untuk melakukan update, tambahkan fungsi „update‟

pada BookController:

public function update()

$id = Input::get('id');

$book = Book::find($id);

$book->title = Input::get('title');

$book->author = Input::get('author');

$book->description = Input::get('description');

$book->price = Input::get('price');

$book->save();
}

Dan, jangan lupa untuk menambahkan route baru sebagai berikut:

Route::post('book/update', 'BookController@update');

Setelah itu, pada file editbook.blade.php, ubahlah

{{ Form::open()) }}

menjadi

{{ Form::open(array('action' => 'BookController@update')) }}

Sekarang, cobalah anda ubah judul dari buku tersebut, lalu klik

tombol update. Maka, data judul buku tersebut akan berubah pula

di database.

Membuat CRUD Sederhana pada Laravel : Part 4

Pada kesempatan kali ini kita akan membuat

fungsi delete .Fungsi delete digunakan untuk menghapus data

yang telah kita masukan ke dalam database. Pertama-tama,


tambahkan link „delete‟ di sebelah link edit dengan cara

mengubah file listbook.blade.php sebagai berikut:

@extends('layout')

@section('content')

<section class="container">

<table class="table">

<tr>

<th>Title</th>

<th>Author</th>

<th>Description</th>

<th>Price</th>

<th>#</th>

</tr>

@foreach($booksdata as $book)

<tr>

<td>{{ $book->title }}</td>

<td>{{ $book->author }}</td>

<td>{{ $book->description }}</td>

<td>{{ $book->price }}</td>

<td>{{ link_to_action('BookController@edit', 'edit', array($book-

>id))}} | {{ link_to_action('BookController@delete', 'delete',

array($book->id))}}</td>

</tr>
@endforeach

</table>

</section>

@stop

Perhatikan, pada kode diatas kita menambahkan {{

link_to_action('BookController@delete', 'delete', array($book->id))}}

yang digunakan untuk menampilkan link „delete‟. Apabila anda

jalankan di browser dengan cara mengakses route „booklist‟,

maka akan muncul error sebagai berikut:

ErrorException

Route [BookController@delete] not defined. (View:

/var/www/laravel/app/views/listbook.blade.php)

Hal, ini disebabkan kita belum

menambahkan route dan action yang diperlukan. Oleh

karena itu, tambahkan route baru sebagai berikut:

Route::get('book/delete/{id}', 'BookController@delete');

Jika, anda jalankan lagi pada browser maka tampilan akan

berjalan normal dan sudah terdapat link delete didalam tabel.

Namun, apabila link tersebut anda klik, tetap akan terjadi error,

karena method „delete‟ masih belum dibuat, untuk itu

pada BookController, tambahkan fungsi delete sebagai

berikut:
public function delete($id)

# code...

Execute Delete

Sekarang, jika anda klik „delete‟ maka tidak akan muncul lagi

pesan error. Namun, data tersebut masih belum terhapus dari

dalam database karena kita belum menambahkan apa-apa pada

method delete. Untuk itu, ubah fungsi delete menjadi sebagai

berikut:

public function delete($id)

$book = Book::find($id);

$book->delete();

return Redirect::to('booklist');

Sekarang, jika anda klik link delete maka data buku yang

bersangkutan akan dihapus. Perhatikan bahwa kode return

Redirect::to('booklist'); digunakan untuk mengembalikan (redirect)

anda ke halaman dengan route „booklist‟.


Membuat autentikasi pengguna dengan menggunakan Laravel

Autentikasi merupakan hal yang sangat penting dalam sebuah

website. Dengan menggunakan autentikasi kita bisa mencegah orang

yang tidak berkepentingan untuk mengakses situs yang kita buat.

Saya rasa anda sudah paham tentang apa itu autentikasi, jadi saya

pikir cukup sudah untuk penjelasannya. Mari kita lanjutkan ke

cara membuat autentikasi menggunakan Laravel. Sebelumnya, saya

asumsikan anda telah melakukan instalasi Laravel pada localhost

dan melakukan setting database.

Pertama-tama yang harus kita buat adalah tabel user. Untuk

membuat tabel user, buat migrasi dengan menjalankan perintah

sebagai berikut:

php artisan migrate:make create_user_table

Buka folder app/migration, anda akan melihat sebuah file berisi

class yang bernama „CreateUserTable‟. Pada class tersebut terdapat

dua method bernama „up‟ dan „down‟. Method „up‟ digunakan

untuk membuat tabel, sedangkan method „down‟ digunakan untuk

menghapus tabel. Tambahkan definisi tabel sebagai berikut pada

method „up‟:

Schema::create('users', function($table)

{
$table->increments('id');Â

$table->string('firstname', 20);Â

$table->string('lastname', 20);Â

$table->string('email', 100)->unique();Â

$table->string('password', 64);Â

$table->timestamps();Â

});

Kemudian pada method „down‟ tambahkan perintah sebagai

berikut:

Schema::drop('users');

Selanjutnya, pada command line jalankan perintah:

php artisan migrate

Dengan begitu, sebuah tabel bernama „users‟ akan dibuat pada

database, lengkap beserta seluruh field-field yang dibutuhkan.

Untuk membuat sistem autentikasi, diperlukan sebuah model,

controller dan view. Model yang digunakan adalah model bernama

„User‟ yang biasanya sudah ada secara default pada instalasi

Laravel. Kemudian untuk controller kita akan membuat sebuah

controller baru bernama „UserController‟, untuk membuat

„UserController‟, jalankan perintah sebagai berikut menggunakan

command line:
php artisan controller:make UserController

Maka, sebuah file baru bernama „UserController.php‟ akan tercipta

pada folder app/controller.

Membuat Halaman Registrasi

Setelah controller kita buat, sekarang kita akan menampilkan

sebuah halaman registrasi. Pertama-tama, kita akan mengubah

fungsi „create‟ pada „UserController‟ menjadi fungsi „register‟:

public function register() { return View::make('register'); }

Pada fungsi register diatas, kita akan diarahkan pada sebuah view

bernama „register‟. Namun, view tersebut masih belum kita buat.

Untuk itu pada folder app/views tambahkan sebuah file baru

bernama „register.blade.php‟:

@extends('layout')

@section('content')

<div class="container"> <h2>Register</h2>

@if(Session::has('pesan'))

<div class="alert alert-success">{{ Session::get('pesan') }}</div>

@endif

{{Form::open(array('action' => 'UserController@store')) }}


{{Form::label('firstname', 'First Name') }}

{{Form::text('firstname', '', array('class' => 'form-control'))}}

{{Form::label('lastname', 'Last Name') }}

{{Form::text('lastname', '', array('class' => 'form-control'))}}

{{Form::label('email', 'Email') }}

{{Form::text('email', '', array('class' => 'form-control'))}}

{{Form::label('password', 'Password') }}

{{Form::password('password', array('class' => 'form-control'))}}

<br>

{{Form::submit('Registerin Dong!', array('class' => 'btn btn-

primary')) }}

{{ Form::close() }} </div> @stop

Setelah itu, buatlah route baru pada file routes.php seperti berikut

ini:

Route::get('register', 'UserController@register');

Route::post('store', 'UserController@store');

Setelah route dibuat, sekarang anda bisa membuka halaman

register yang barusan anda buat melalui browser dengan cara

mengakses route „register‟.Misal:

http:/localhost/laravel/register
Registrasikan Pengguna

Setelah halaman registrasi kita buat, kita akan memasukan data

dari form yang barusan kita buat ke dalam database. Pada form

tersebut terdapat kode sebagai berikut:

{{Form::open(array('action' => 'UserController@store')) }}

Itu berarti, ketika disubmit, data dari form tersebut akan di-handle

Oleh method „store‟ pada „UserController‟. Untuk itu silahkan buka

„UserController‟ kemudian tambahkan perintah sebagai berikut ke

dalam method „store‟:

$user = new User();

$user->firstname = Input::get('firstname');

$user->lastname = Input::get('lastname');
$user->email = Input::get('email');

$user->password = Hash::make(Input::get('password'));

$user->save();

return Redirect::to('register')->with('pesan', 'Registrasi berhasil!');

Sekarang, apabila anda isi form tersebut kemudian tekan tombol

„Registerin Dong!‟ (seperti submit), maka data yang anda masukan

akan tersimpan di database.

Membuat Fitur Login

Untuk membuat halaman Login, pertama-tama buatlah dua buah

fungsi baru yaitu „login‟ dan „authenticate‟:

public function login(){

public function authenticate(){

Selain itu, buatlah dua buah route baru pada file routes.php

sebagai berikut:

Route::get('login', 'UserController@login');

Route::post('authenticate', 'UserController@authenticate');
Halaman Login

Sekarang, kita akan membuat tampilan halaman login. Pada

method „login‟ tambahkan baris perintah sebagai berikut:

return View::make('login');

Kemudian pada direktori app/views tambahkan sebuah view baru

dengan nama file login.blade.php:

@extends('layout')

@section('content')

<div class="container">

<div class="col-md-5 col-md-offset-3">

<h2>Login</h2>

<hr />

@if(Session::has('pesan_error'))

<div class="alert alert-danger">{{ Session::get('pesan_error') }}</div>

@endif

{{Form::open(array('action' => 'UserController@authenticate')) }}

{{Form::label('email', 'Email') }}

{{Form::text('email', '', array('class' => 'form-control'))}}

{{Form::label('password', 'Password') }}
{{Form::password('password', array('class' => 'form-control'))}}

{{Form::submit('Login', array('class' => 'btn btn-primary')) }}

{{Form::close() }}

</div>

</div>

@stop

Autentikasi

Ketika tombol login di-klik, form akan diarahkan ke method

„authenticate‟ pada UserController. Pada method inilah autentikasi

dilakukan, untuk itu tambahkan baris perintah sebagai berikut

pada method authenticate:

if (Auth::attempt(array('email' => Input::get('email'), 'password' =>

Input::get('password'))))

echo "login berhasil";

else{

return Redirect::to('login')->with('pesan_error', 'Login gagal, email

atau password salah!');

}
Sekarang, jika anda tekan tombol „login‟ dan autentikasi berhasil

maka akan tampil tulisan “login berhasil”. Namun, jika

autentikasi gagal, maka sebuah pesan kesalahan akan ditampilkan

pada halaman login.

Membuat Halaman Dashboard

Sebelumnya, apabila kita sudah berhasil login kita hanya akan

melihat tulisan „login berhasil‟. Nah, kali ini kita akan membuat

supaya pengguna diarahkan ke halaman dashboard apabila login

berhasil. Buat sebuah controller baru bernama

„DashboardController‟:

<?php

class DashboardController extends BaseController

public function index(){

return View::make('dashboard');

}
}

?>

Setelah itu, buatlah sebuah route baru pada routes.php sebagai

berikut:

Route::get('dashboard', 'DashboardController@index');

Kemudian, jangan lupa untuk membuat sebuah view baru bernama

„dashboard.blade.php‟. Setelah itu, ubah autentikasi yang ada pada

method authenticate menjadi sebagai berikut:

function authenticate(){

if (Auth::attempt(array('email' => Input::get('email'), 'password' =>

Input::get('password'))))

return Redirect::to('dashboard');

return Redirect::to('login')->with('pesan_error', 'Login gagal, email

atau password salah!');

Sampai disini, apabila anda mencoba login kembali maka akan

diarahkan ke halaman dashboard. Tentu halaman dashboard yang


dimaksud adalah halaman kosong, mengingat kita baru membuat

viewnya saja, tanpa ada isinya.

Membuat fungsi logout

Sekarang, saatnya kita membuat fungsi logout. Untuk itu, kita akan

membuat view „dashboard‟ yang telah kita buat dari halaman

kosong menjadi sebagai berikut:

@extends('layout')

@section('content')

<nav class="navbar navbar-inverse navbar-static-top"

role="navigation">

<div class="container-fluid">

<!-- Brand and toggle get grouped for better mobile display -->

<div class="navbar-header">

<button type="button" class="navbar-toggle" data-

toggle="collapse" data-target="#bs-example-navbar-collapse-1">

<span class="sr-only">Toggle navigation</span>

<span class="icon-bar"></span>

<span class="icon-bar"></span>

<span class="icon-bar"></span>

</button>

<a class="navbar-brand" href="#">AuthApp</a>

</div>
<!-- Collect the nav links, forms, and other content for toggling --

>

<div class="collapse navbar-collapse" id="bs-example-navbar-

collapse-1">

<ul class="nav navbar-nav navbar-right">

<li><a href="logout"><i class="glyphicon glyphicon-off"></i>

logout</a></li>

</ul>

</div><!-- /.navbar-collapse -->

</div><!-- /.container-fluid -->

</nav>

<div class="container">

<h1>Dashboard</h1>

</div>

@stop
Selanjutnya, perhatikan pada halaman dashboard diatas terdapat

kode sebagai berikut:

<li><a href="logout"><i class="glyphicon glyphicon-off"></i>

Pada atribut href, kita bisa melihat bahwa kita akan diarahkan

pada route „logout‟ apabila link tersebut kita klik. Namun, route

„logout‟ masih belum kita buat, oleh itu tambahkan route „logout‟

sebagai berikut pada file routes.php:

Route::get('logout', 'UserController@logout');

Kemudian, tambahkan sebuah method pada „UserController‟ sebagai

berikut:

public function logout(){

Auth::logout();

return Redirect::to('login')->with('pesan', 'berhasil logout');

Selanjutnya, untuk menampilkan pesan berhasil logout, tambahkan

perintah sebagai berikut pada bagian atas form login:

@if(Session::has('pesan'))

{{ Session::get('pesan') }}

@endif
Kesimpulan

Sejauh ini anda telah berhasil membuat halaman registrasi, login

dan logout. Tentunya, masih ada beberapa kelemahan dalam

aplikasi yang barusan kita buat. Misalnya, akan terjadi error

apabila kita memasukan email yang sama saat registrasi.

Kemudian, jika kita belum login dan mengakses

http://localhost/dashboard seharusnya pengguna diarahkan ke

halaman login. Dan masih ada beberapa hal lagi yang harus

diperbaiki namun tidak akan saya bahas dalam tulisan ini

berharap anda bisa mencobanya sendiri.

Have a nice day!

Bekerja dengan Laravel lebih cepat menggunakan Laravel

Generators

Laravel-generators adalah sebuah package yang memungkinkan

pengguna untuk membuat controller, model, dan sebagainya dengan

lebih cepat. Laravel-generators dibuat oleh Jeffrey Ways. Untuk

memasang laravel-generators pada Laravel yang telah anda instal

anda perlu menambahkan perintah berikut pada file composer.json:

"require-dev": {

"way/generators": "2.*"
},

Setelah itu, jalankan perintah composer update pada command-

line. Tunggu sampai proses instalasi selesai. Setelah terinstal anda

bisa melihat perintah apa saja yang bisa anda gunakan pada

laravel-generators dengan menjalankan php artisan pada

command-line.

Membuat Controller

Untuk membuat sebuah controller baru dengan menggunakan

laravel-generators, anda tinggal menjalankan perintah:

php artisan generate:controller UserController

Pada contoh diatas, kita membuat sebuah controller dengan nama

„UserController‟. Sesuaikan nama controller tersebut dengan nama

controller yang ingin anda buat.

Sekarang, jika anda buka direktori app/controller, maka anda

akan melihat sebuat file baru bernama UserController.php dimana

didalamnya sudah terdapat action-action seperti index, create, store

dan sebagainya.

Membuat Migration
Sebenarnya, untuk membuat migration anda juga bisa

melakukannya tanpa menggunakan laravel-generators yaitu dengan

menggunakan perintah:

php artisan migrate:make create_user_table

Dimana create_user_table adalah nama migration yang akan kita

buat. Untuk membuat migration dengan menggunakan Laravel-

generators, lakukan perintah sebagai berikut:

php artisan generate:migration create_user_table

Jika, anda perhatikan, terdapat sedikit perbedaan pada kedua

perintah diatas. Silahkan anda perhatikan pada file yang ter-

generate. Maka, file yang tergenerate dengan menggunakan laravel-

generators terlihat sedikit lebih lengkap dan memudahkan kita

untuk melangkah ke proses selanjutnya.

Membuat Model

Untuk membuat model cukup gunakan perintah sebagai berikut:

php artisan generate:model Example

Maka sebuah file baru bernama Example.php akan terbentuk pada

direktori app/model sebagai berikut:

<?php
class Example extends \Eloquent {

protected $fillable = [];

Membuat View

Membuat view sangatlah mudah, ketikan perintah berikut melalui

command-line:

php artisan generate:view Example

Dengan begitu, sebuah file baru akan dibuat pada direktori

app/views dengan nama Example.blade.php.

Semoga Bermanfaat.

Mengenal CRUD dan Relationship pada Eloquent ORM Laravel

Eloquent adalah sebuah ORM (Object Relational Mapping) yang

sangat powerful dan expressive. Jika anda pernah bekerja dengan

object pada php, maka anda tidak akan terlalu kesulitan bekerja

dengan Eloquent ORM.

Pada Laravel, setiap model (yang merupakan turunan dari

Eloquent) mewakili sebuah table pada database. Namun, perlu

diingat meskipun sebuah model mewakili sebuah tabel, dalam

prakteknya kita seringkali menggunakan beberapa model untuk


mengambil data. Dengan menggunakan relationship kita bisa

melakukan pengambilan data dari banyak tabel sekaligus.

Kadangkala, saat menggunakan Laravel kita tidak menggunakan

eloquent, tetapi menggunakan class bernama DB. Bahkan dengan

cara demikian, kita tidak perlu membuat model. Hal ini sah-sah

saja, namun alangkah bijaknya jika menggunakan eloquent model.

Dengan menggunakan eloquent model, program yang kita buat bisa

lebih rapi dan mudah dibaca dan juga tentu saja lebih cepat serta

mudah digunakan kembali.

Membuat Eloquent Model

Kali ini kita akan membuat dua buah Model bernama „Penulis‟

dan „Artikel‟. Namun sebelumnya, terlebih dahulu buat database

bernama Orang dan Artikel dengan menggunakan Migrasi sebagai

berikut:

<?php

use Illuminate\Database\Schema\Blueprint;

use Illuminate\Database\Migrations\Migration;

class CreateArticlesTable extends Migration {

/**
* Run the migrations.

* @return void

*/

public function up()

Schema::create('articles', function(Blueprint $table)

$table->increments('id');

$table->string('judul');

$table->text('body');

$table->integer('author_id');

$table->timestamps();

});

/**

* Reverse the migrations.

* @return void

*/

public function down()

Schema::drop('articles');
}

?>

<?php

use Illuminate\Database\Schema\Blueprint;

use Illuminate\Database\Migrations\Migration;

class CreateAuthorsTable extends Migration {

/**

* Run the migrations.

* @return void

*/

public function up()

Schema::create('authors', function(Blueprint $table)

$table->increments('id');

$table->string('username')->unique();

$table->text('bio');

$table->timestamps();
});

/**

* Reverse the migrations.

* @return void

*/

public function down()

Schema::drop('authors');

?>

Setelah migrasi dibuat, kemudian jalankan perintah php artisan

migrate pada command-line. Lalu, buatlah sebuah model sebagai

berikut:

<?php class Author extends Eloquent {} ?>

Model kemudian disimpan pada file app/models/Author.php. Model

diatas secara otomatis dimapping kepada tabel bernama „authors‟

yang telah kita buat sebelumnya dengan menggunakan migrasi.

Proses mapping secara otomatis mengikuti aturan tunggal dan jamak


dalam bahasa inggris dimana nama class model menggunakan kata

tunggal (contoh „Author‟, „User‟, dsb) sedangkan nama tabel di

database menggunakan kata jamak (contoh „authors‟, „users‟ dsb).

Create

Dengan menggunakan eloquent, kita bisa memasukan data ke

dalam database dengan berbagai cara. Berikut adalah cara yang

paling sering saya gunakan:

// app/routes.php

Route::get('/', function()

$author = new Author;

$author->username = 'Sleeping Komodo';

$author->bio = 'Saya adalah orang yang ganteng';

$author->save();

});

Select

Berikut adalah cara melakukan select menggunakan eloquent:

// app/routes.php

Route::get('/', function()
{

$authors = Author::all()->first();

echo $authors->username;

echo $authors->bio;

});

Fungsi first digunakan untuk mengambil hanya record yang

pertama dari data yang ada pada query select. Untuk mengambil

semua data, cukup hilangkan method first tersebut, setelah itu data

bisa ditampilkan dengan menggunakan foreach:

// app/routes.php

Route::get('/', function()

$authors = Author::all();

foreach($authors as $author)

echo $author->username;

echo $author->bio;

});
Update

Mari kita lanjutkan ke fungsi selanjutnya, yaitu update. Saya akan

merubah nama author yang tadinya „Sleeping Komodo‟ menjadi

„Sleeping Komodo ganteng‟. Seperti kita ketahui, setiap record pada

tabel „authors‟ memiliki id yang di-generate secara otomatis

menggunakan auto-increment. Kali ini anggap saya record yang

akan kita ubah memiliki id = 1, maka kode untuk melakukan

update menjadi sebagai berikut:

// app/routes.php

Route::get('/', function()

$author = Author::find(1); //Temukan author dengan id = 1

$author->username = 'Sleeping Komodo Ganteng';

$author->bio = 'Saya adalah orang yang ganteng';

$author->save();

});
Perhatikan bahwa contoh diatas hampir sama dengan contoh

ketika kita melakukan create. Bedanya kita menggunakan

Author::find(1) untuk menginisialisasi variabel $author.

Delete

Delete adalah yang paling mudah. Berikut contoh penggunaan

delete pada eloquent:

// app/routes.php

Route::get('/', function()

$author = Author::find(1); //Temukan author dengan id = 1

$author->delete();

});

Relationship menggunakan eloquent

Relationship adalah komponen utama pada eloquent. Sebelum

mempelajari relationship marilah terlebih dahulu menambahkan

data-data berikut pada tabel authors:

Route::get('/', function()

$author = new Author;


$author->username = 'Benny Ibrahim';

$author->bio = 'Seorang penulis buku';

$author->save();

$author = new Author;

$author->username = 'Adam Saefullah';

$author->bio = 'Seorang penulis artikel';

$author->save();

$author = new Author;

$author->username = 'Willy Alghifari';

$author->bio = 'Seorang penulis blog';

$author->save();

});

Setelah anda jalankan kode diatas, maka 3 record baru akan

dimasukan ke dalam database. Kemudian ubah route diatas

menjadi sebagai berikut:

Route::get('/', function()

$author = Author::find(1);

$article = new Article;

$article->title = 'Perjalanan ke pulau harapan';


$article->body = 'Perjalanan ke pulau harapan menjadi sangat

menarik karena adanya rombongan fotografer yang ikut bersama

kami

sehinga momen perjalanan kami bisa diabadikan';

$article->author_id = $author->id;

$article->save();

$article2 = new Article;

$article2->title = 'Perjalanan ke pulau harapan versi 2';

$article2->body = 'Perjalanan ke pulau harapan menjadi sangat

menarik karena adanya rombongan fotografer yang ikut bersama

kami

sehinga momen perjalanan kami bisa diabadikan versi 2';

$article2->author_id = $author->id;

$article2->save();

});

Setelah kode diatas, dijalankan ganti $author = Author::find(1);

menjadi $author = Author::find(2); kemudian jalankan lagi. Setelah

itu, itu ganti lagi menjadi $author = Author::find(3); lalu jalankan

lagi dan seterusnya sebanyak jumlah author yang ada di database

sehingga, setiap author memiliki dua article.

Menggunakan hasMany
Seorang penulis (author) biasanya memiliki banyak artikel. Pada

Laravel, kita bisa mendefinisikan relationship sebagai berikut:

<?php

class Author extends Eloquent {

public function articles()

return $this->hasMany('Article');

?>

Jika kode tersebut diterjemahkan ke dalam bahasa manusia maka

akan menjadi „this author has many article / author ini memiliki

banyak artikel‟. Cukup mudah dipahami bukan?

Menggunakan belongsTo

<?php

class Article extends Eloquent {

public function author()

return $this->belongsTo('Author');
}

} ?>

Kita juga bisa menerjemahkan method belongsTo ini ke dalam

bahasa manusia menjadi „this article belongs to author / artikel ini

dimiliki oleh satu author‟. Lumayan simple kan ?

Menggunakan dynamic method

Sekarang, setelah anda membuat relationship pada model, kita bisa

melakukan select terhadap data yang ada pada tabel bersangkutan,

tentunya dengan memanfaatkan relationship tersebut. Sebagai

contoh saya akan mengambil article dengan nama penulis „Benny

Ibrahim‟ maka saya bisa melakukannya dengan cara sebagai

berikut:

Route::get('/', function()

$author = Author::whereUsername('Benny Ibrahim')->first();

foreach($author->articles as $article){

echo $article->title;

echo $article->body;

}
});

Perhatikan, pada contoh diatas kita menggunakan method

whereUsername. Jika anda pernah melihat dokumentasi Laravel,

maka anda tidak akan pernah menemukan method tersebut. Karena

method tersebut adalah method dinamis (dynamic method) dimana

kita mengkombinasikan kata „where‟ dengan nama kolom yang

ingin kita gunakan („username‟). Jadi, jika anda ingin memfilter

data berdasarkan kolom dengan nama „umur‟, maka anda bisa

menggunakan whereUmur, jika berdasarkan kolom jabatan =

whereJabatan dan seterusnya.

Sekarang mari kita lakukan kebalikannya, kita mengambil nama

penulis yang menulis article dengan judul „Perjalanan ke pulau

harapan‟.

Route::get('/', function()

$article = Article::whereTitle('Perjalanan ke pulau harapan')-

>first();

echo $article->author->username;

echo $article->author->bio;

});
Perhatikan bahwa model yang digunakan pada contoh diatas

adalah „Article‟ dimana kita bisa mengakses kolom-kolom dari

tabel „authors‟ dengan mudah tanpa harus menginisisasi model

Author dengan menggunakan $authors = Author::all() dsb.

Contoh lain untuk cara mengambil data menggunakan relationship

adalah sebagai berikut:

Route::get('/', function()

$articles = Article::all();

foreach($articles as $article){

echo $article->author->username;

echo ' menulis artikel berjudul ';

echo $article->title;

});

Perhatikan, bahwa cara diatas akan berjalan sangat lambat

terutama terutama ketika menangani data dalam jumlah yang

banyak, karena kueri yang digunakan secara background tidak

efektif dan terdiri dari beberapa kueri. Misalnya, jika terdapat 10

data, maka akan diselect satu-satu sehingga terdapat 10 kueri.

Sebagai alternatif, gunakan cara sebagai berikut:


Route::get('/', function()

$paintings = Painting::with('author')->get();

foreach($articles as $article){

echo $article->author->username;

echo ' menulis artikel berjudul ';

echo $article->title;

});

Dengan cara tersebut kueri yang digunakan bisa lebih sedikit yaitu

hanya menjadi 2 query saja. Anda bisa melihat jumlah query yang

digunakan dengan men-trace sendiri.

Semoga bermanfaat.

Membuat Shopping Cart Menggunakan Laravel

Shopping cart sangat diperlukan ketika kita membuat aplikasi

terutama yang berhubungan dengan toko online. Dengan

menggunakan shopping cart, barang yang akan dibeli oleh

pengguna bisa disimpan terlebih dahulu dan pengguna dapat

melanjutkan berbelanja. Data barang disimpan di dalam cache,

sehingga ketika pengguna berpindah halaman pada aplikasi, data


tersebut tidak hilang. Data barang tersebut kemudian akan

disimpan di database ketika pengguna selesai berbelanja dan

menekan tombol checkout.

Instal package shopping cart

Untuk membuat shopping cart pada Laravel kita akan

menambahkan sebuah package baru. Untuk itu, buka file

composer.json dan tambahkan "gloudemans/shoppingcart": "dev-

master" pada bagian require sehingga menjadi seperti berikut:

"require": {

"laravel/framework": "4.1.25",

"gloudemans/shoppingcart": "dev-master"

},

setelah itu, buka command-line lalu masuk ke dalam folder

laravel anda ( cd c://xampp/htdocs/<nama folder> bagi pengguna

windows atau cd /var/www/<nama folder> jika anda menggunakan

linux). Setelah masuk ke dalam direktori, lalu jalankan perintah

composer update, tunggu sampai proses update selesai.

Setelah itu, buka file app/config/app.php kemudian tambahkan

kode berikut pada bagian service providers:

'Gloudemans\Shoppingcart\ShoppingcartServiceProvider'

Lalu pada bagian aliases tambahkan kode berikut:


'Cart' => 'Gloudemans\Shoppingcart\Facades\Cart',

NOTE: Saat menjalankan composer update anda perlu terhubung ke

internet.

Membuat tabel Produk

Sebelum lebih jauh membahas penggunaan shopping cart, mari kita

buat terlebih dahulu database untuk menampung produk dengan

menjalankan migrasi sebagai berikut:

Schema::create('products', function($table){

$table->increments('id')->unsigned();

$table->string('name');

$table->string('description', 500);

$table->string('price', 10);

$table->timestamps();

});

Tabel produk yang saya buat diatas saya buat sesederhana mungkin

agar tidak terlalu rumit. Tabel dibuat dengan migrasi-nya laravel.

Bagi anda yang belum tahu cara migrasi tabel dengan laravel, bisa

baca disini. Anda juga bisa membuat tabel secara manual dengan

menggunakan PHPMyadmin jika anda mau. Setelah tabel dibuat,

masukan beberapa data ke dalamnya.

Menampilkan List Produk


Selanjutnya, kita buat halaman untuk menampilkan list produk.

Dimana pada masing-masing item, terdapat tombol „add to cart‟

yang berfungsi memasukan produk ke keranjang belanja (shopping

cart). Untuk membuat halaman tersebut, ada beberapa tahapan

yang harus kita lakukan. Pertama pada direktori app/model buat

sebuah model bernama Product:

<!-- app/model/product.php -->

<?php

class Product extends Eloquent

?>

Selanjutnya, pada file app/routes.php, ubah route utama menjadi

seperti berikut:

Route::get('/', function()

$products = Product::all();

return View::make('productlist')->with('products', $products);

});

Lalu pada folder app/views buat sebuah view baru dengan nama

productlist.blade.php sesuai yang kita telah definisikan pada route:


<!-- productlist.blade.php -->

<div class="container">

@foreach($products as $product)

<div class="col-md-3">

<div class="panel">

<div class="panel-heading">

{{ $product->name }}

</div>

<div class="panel-body">

{{ $product->description }}

</div>

<div class="panel-footer">

<a class="btn btn-info pull-right"

href="{{ url('product/cart/'.$product->id) }}"><i class="fa fa-

shopping-cart"></i> add to cart</a>

</div>

</div>

</div>

@endforeach

</div>
NOTE: Saya menggunakan Twitter Bootstrap sebagai CSS Framework,

itulah sebabnya saya menggunakan class „container‟, „panel-

heading‟, „panel-body‟ dan lain-lain.

Membuat shopping cart

Yap, akhirnya kita sampai juga pada bahasan utama kita. Jika

anda perhatikan view yang telah anda buat, didalamnya terdapat

syntax sebagai berikut:

<a class="btn btn-info pull-right" href="{{

url('product/cart/'.$product->id) }}"><i class="fa fa-shopping-

cart"></i> add to cart</a>

Perhatikan bahwa ketika tombol „add to cart‟ di-klik, maka

pengguna akan diarahkan ke route product/cart. Untuk itu mari

kita buat route tersebut, tambahkan kode dibawah ini pada

app/routes.php:

Route::get('product/cart/{id}', function($id){

});

Kemudian, pada route tersebut kita akan memasukan product yang

dimaksud ke dalam cache shopping cart, setelah itu kita tampilkan


isi dari shopping cart tersebut dalam bentuk tabel. Ubah kode

diatas menjadi sebagai berikut:

Route::get('product/cart/{id}', function($id){

$product = Product::find($id);

$id = $product->id;

$name = $product->name;

$qty = 1;

$price = $product->price;

$data = array('id' => $id,

'name' => $name,

'qty' => $qty,

'price' => $price,

'options' => array('size' =>

'large'));

Cart::add($data);

$cart_content = Cart::content(1);

return View::make('productcart')->with('cart_content',

$cart_content);

});
setelah itu, kita buat sebuah view baru productcart.blade.php.

<!-- app/views/productcart.blade.php -->

<div class="container">

<h4><i class="fa fa-shopping-cart"></i> cart</h4>

<hr>

<!-- Panel -->

{{ Message::success() }}

<div class="panel">

<div class="panel-heading">Cart</div>

<table class="table table-striped m-b-none text-sm">

<thead>

<tr>

<th width="8">No</th>

<th width="300">Product Name</th>

<th>Price</th>

<th width="100">Quantity</th>

<th width="200">Action</th>

</tr>

</thead>

<tbody>

<?php $i = 1; ?>

@foreach($cart_content as $cart)
<tr>

<td>{{ $i }}</td>

<td>{{ $cart->name }}</td>

<td>{{ $cart->price }}</td>

<td>{{ $cart->qty }}</td>

<td>

<a href="{{ url('cart/delete/'.$cart-

>rowid) }}">delete</a>

</td>

</tr>

<?php $i++; ?>

@endforeach

</tbody>

</table>

<div class="panel-footer">

<a href="{{ url('/dashboard') }}" class="btn btn-

white">Continue Shopping</a>

<a href="{{ url('cart/checkout') }}" class="btn btn-

info">Checkout</a>

</div>

</div>

<!-- / Panel -->

</div>
Menghapus item dari dalam shopping cart

Jika anda perhatikan view yang telah anda buat diatas, akan

terdapat link delete yang mengarah ke route cart/delete/{id}. Untuk

itu, mari kita buat route tersebut. Tambahkan syntax berikut pada

app/routes.php:

Route::get('cart/delete/{id}' , function(){

Cart::remove($id);

return View::make('productcart')->with('cart_content',

$cart_content);

});

Perhatikan bahwa sebuah item dalam cart bisa dihapus

berdasarkan rowid yang dimilikinya.

Melakukan checkout

Untuk melakukan checkout, kita akan membuat sebuah route

sebagai berikut:

Route::get('cart/checkout' , function(){

$formid = str_random();

$cart_content = Cart::content(1);
foreach ($cart_content as $cart) {

$transaction = new Transaction();

$product = Product::find($cart->id);

$transaction->product_id = $cart->id;

$transaction->form_id = $formid;

$transaction->qty = $cart->qty;

$transaction->total_price = $cart->price * $cart-

>qty;

$transaction->status = 'unpaid';

$transaction->save();

Cart::destroy();

echo "Checkout berhasil";

});
Perhatikan kode diatas, pada saat melakukan checkout, kita akan

memindahkan semua data yang ada pada cart ke dalam sebuah

tabel bernama transactions. Dengan demikian, jika kita melakukan

checkout sekarang, maka akan terjadi error karena tabel

transactions masih belum kita buat. Untuk membuat tabel

transactions, gunakan migrasi sebagai berikut:

Schema::create('transactions', function($table){

$table->increments('id')->unsigned();

$table->string('product_id');

$table->string('form_id');

$table->string('qty');

$table->string('total_price');

$table->string('status');

$table->timestamps();

});

Kemudian pada app/models tambahkan sebuah model

transaction.php sebagai berikut:

<?php

class Transaction extends Eloquent

?>
Sekarang, jika anda kembali mencoba melakukan checkout. Maka

data-data di dalam cart akan berhasil dimasukan ke dalam tabel

transaction.

semoga bermanfaat.

Cara melakukan manipulasi file image pada Laravel

Terkadang ketika meng-upload sebuah file image pada aplikasi web

yang kita buat, kita perlu melakukan image resizing, image crop,

menambahkan watermark dan sebagainya, agar gambar yang kita

upload bisa terlihat pas saat ditampilkan.

Package Laravel untuk melakukan image resizing

Untuk melakukan image resizing kita akan menggunakan sebuah

package bernama intervention/image. Untuk itu, tambahkan

"intervention/image": "1.*" di bagian require pada file composer.json

"require": {

"laravel/framework": "4.1.25",

"intervention/image": "1.*",

},
Setelah itu jalankan perintah composer update melalui command-

line. Tunggu beberapa saat hingga package terinstal. Sebagai

catatan, anda perlu terhubung ke internet ketika melakukan proses

ini.

Setelah proses selesai, kemudian buka file app/config/app.php

setelah itu pada bagian providers tambahkan kode berikut:

'Intervention\Image\ImageServiceProvider',

Kemudian, tambahkan pula kode berikut pada bagian aliases:

'Image' => 'Intervention\Image\Facades\Image',

Setelah itu, package intervention/image sudah siap anda gunakan.

Melakukan image crop dengan intervention/image

Berikut adalah cara melakukan crop image dengan menggunakan

intervention/image.

$file_path = 'uploads/image.png';

$img = Image::make($file_path);

$img->crop(500, 300);

$img->save($file_path);

perhatikan contoh diatas, misalnya kita mempunyai sebuah file

gambar dengan nama image.png dimana file tersebut terletak pada


folder public/uploads. Kemudian kita mempersiapkan file gambar

tersebut untuk diproses. Untuk itu, kita menggunakan perintah $img

= Image::make($file_path);. Setelah siap, gambar tersebut kemudian

di-crop dengan ukuran 500×300. File gambar asli masih tersimpan

dengan ukuran sebenarnya, yang barusan kita crop adalah file

gambar kloningan dari gambar asli tersebut. Kita secara otomatis

mengkloningnya ketika menjalankan perintah $img =

Image::make($file_path);.

Setelah gambar hasil kloningan di crop, kemudian kita

menyimpannya dengan perintah, $img->save($file_path);. Karena

kita menyimpannya dengan path yang sama dengan gambar yang

asli, maka gambar aslinya akan ditimpa dan hilang. Seolah-olah

gambar asli tersebut yang kita crop. Jika, anda ingin gambar yang

asli tetap ada, silahkan simpan dengan path yang berbeda.

Melakukan image resizing

Selain melakukan crop, anda juga bisa melakukan resize dengan

cara sebagai berikut:

$file_path = 'uploads/image.png';

$img = Image::make($file_path);

$img->resize(500, 300);

$img->save($file_path);
Proses resize sangat mirip dengan crop, kita hanya mengganti $img-

>crop(500, 300); dengan $img->resize(500, 300);. Perbedaan resize

dengan crop adalah, ketika menggunakan crop gambar akan

dipotong menjadi berukuran sesuai dengan yang kita inginkan

pada contoh diatas ukuran yang kita gunakan adalah 500 x 300.

Karena, gambar tersebut dipotong, maka sebagaian dari gambar

akan hilang.

Sedangkan, pada resize, gambar tidak dipotong sehingga tidak ada

bagian gambar yang hilang. Namun demikian, apabila kita terlalu

memaksakan dalam melakukan resize maka gambar akan menjadi

terlihat gepeng. Misal, kita melakukan resize gambar berukuran

500 x 300 menjadi 500 x 50, tentu gambar akan menjadi terlihat

tidak normal. Jika anda ingin melakukan resize, usahakan dengan

dimensi yang sama, misal gambar berukuran 1000 x 500 di-resize

menjadi 500 x 250 (1000 x 500 = 2:1, 500 x 250 = 2:1 —- sama-

sama 2:1).

Menambahkan Watermark

Selain itu, anda juga bisa menambahkan watermark pada file

gambar dengan menggunakan intervention/image. Caranya cukup

mudah:

$file_path = 'uploads/image.png';
$watermark = 'uploads/watermark.png';

$img = Image::make($file_path);

$img->insert($watermark);

$img->save($file_path);

NOTE: dokumentasi lebih lengkapnya bisa anda lihat disini :

http://image.intervention.io/

Semoga bermanfaat.

Menggunakan pagination pada Laravel

Sepertinya hampir setiap aplikasi berbasis web yang memiliki

fungsi untuk mengatur data memerlukan pagination ketika

menampilkan data yang cukup banyak.

Pagination adalah solusi yang cukup baik untuk mengatasi

kelebihan informasi. Saya pikir hampir semua orang tahu cara

menggunakan pagination.

Namun, untuk membuat sistem pagination dari awal akan sangat

memakan waktu dan juga membosankan. Ada banyak potongan

program yang harus anda tulis hanya untuk menampilkan

pagination sesuai dengan jumlah data dari database dan posisi


anda melihat data saat ini, kemudian menampilkannya pada

bagian bawah data.

Untungnya, pagination merupakan salah satu dari sekian banyak

fitur pada Laravel dimana kita bisa menggunakannya dengan lebih

mudah tanpa harus membuat dari awal. Membuat pagination dari

awal bisa menjadi mimpi buruk, sedangkan jika anda tidak

menggunakan pagination tentu kasihan pengguna anda jika harus

melihat terlalu banyak data dalam satu waktu.

Apa itu Pagination

Pagination adalah suatu cara menampilkan data yang banyak ke

dalam beberapa halaman. Ketika awal mula membuat sebuah

aplikasi web, anda mungkin tidak memerlukan pagination.

Namun, seiring berjalannya waktu dan semakin banyak data yang

harus ditampilkan, maka pagination akan menjadi sangat penting.

Jika anda menampilkan banyak data sekaligus dalam satu waktu,

maka hal itu akan memperlambat proses pengambilan data dari

database dan menyebabkan aplikasi menjadi lambat.

Dengan menggunakan pagination, hanya beberapa set data saja

yang akan diambil dari database dan ditampilkan langsung pada

aplikasi. Pada database, jumlah data dihitung dan dibagi-bagi

menjadi beberapa halaman tergantung dari berapa banyak yang

ingin anda tampilkan per halamannya. Kemudian jumlah


halaman diperkirakan dan dijadikan nomor halaman pada bagian

bawah tampilan data. Semoga anda mengerti (sudah mengerti

sebelumnya) tentang apa itu pagination.

Menggunakan method paginate pada Laravel

Seperti yang sudah saya jelaskan, Laravel bisa mempermudah

pembuatan pagination. Pada Eloquent maupun pada query

builder-nya Laravel, terdapat method paginate yang bisa

menentukan berapa jumlah data yang ingin ditampilkan, dimana

semuanya sudah di-handle oleh Laravel.

Misal, dengan menggunakan Eloquent anda bisa mengambil data

dari database dengan menggunakan method paginate sebagai

berikut:

$users = User::paginate(60);

atau jika menggunakan query builder:

$users = User::paginate(50);

Kemudian, pada bagian bawah dari data yang ditampilkan (di

bawah foreach), anda bisa menambahkan link pagination dengan

cara sebagai berikut:

{{ $users->links(); }}
Contoh kode lengkap yang bisa anda gunakan untuk membuat

pagination adalah sebagai berikut:

routes.php

Route::get('/', function()

$products = Product::paginate(50);

return View::make('tampilkan')->with('products', $products);

});

views/tampilkan.blade.php

@foreach($products as $product)

<tr>

<td>{{ $product->name }}</td>

<td>{{ $product->price }}</td>

<td>{{ $product->stock }}</td>

<td>

{{ Link::edit('product/edit/'.$product->id) }} |

{{ Link::delete('product/delete/'.$product->id) }}

</td>

</tr>

@endforeach

{{ $products->links() }}
Mudah bukan? dengan menggunakan Laravel pembuatan

pagination bisa semudah itu. Namun, mungkin ada kalanya anda

perlu untuk mengubah tampilan pagination tersebut supaya sesuai

dengan keinginan anda, misalnya supaya sesuai dengan CSS yang

telah anda buat. Anda bisa melakukannya dengan cara membuat

custom pagination caranya akan saya jelaskan pada bagian

dibawah ini.

Membuat Custom Pagination

Untuk membuat custom pagination pertama-tama anda buat sebuah

folder baru, pada app/views. Misal, folder tersebut anda beri nama

structure. Anda boleh memberi nama lain jika anda mau. Setelah

itu, pada folder tersebut buat sebuah file baru bernama

pagination.blade.php. Contoh isi file tersebut adalah sebagai

berikut:

<?php

@if ($paginator->getLastPage() > 1)

<ul class="ui pagination menu">

<a href="{{ $paginator->getUrl(1) }}"

class="item{{ ($paginator->getCurrentPage() == 1) ? ' disabled' : ''

}}">

<i class="icon left arrow"></i> Previous

</a>
@for ($i = 1; $i <= $paginator->getLastPage(); $i++)

<a href="{{ $paginator->getUrl($i) }}"

class="item{{ ($paginator->getCurrentPage() == $i) ? ' active' : '' }}">

{{ $i }}

</a>

@endfor

<a href="{{ $paginator->getUrl($paginator->getCurrentPage()+1) }}"

class="item{{ ($paginator->getCurrentPage() == $paginator-

>getLastPage()) ? ' disabled' : '' }}">

Next <i class="icon right arrow"></i>

</a>

</ul>

@endif

?>

Silahkan anda ubah kode diatas sesuai dengan kebutuhan anda.

Misalnya, mengubah nama class dan lain-lain. Setelah itu, buka

file app/config/view.php, lalu

ubah key pagination menjadi sebagai berikut:

'pagination' => 'structure/pagination'

Dengan cara seperti itu, ketika anda menuliskan $products->links()

, maka yang ditampilkan bukan lagi pagination bawaan dari

laravel, tetapi pagination yang barusan anda buat. Selamat

mencoba!

You might also like