Crud Laravel

  • Uploaded by: black-script
  • 0
  • 0
  • January 2021
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Crud Laravel as PDF for free.

More details

  • Words: 6,564
  • Pages: 81
Loading documents preview...
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:

//------------------------------------------------------------------------------------------------------------//
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: <meta charset='utf-8' /> CRUD App

<meta name='viewport' content='width=device-width, initialscale=1, maximum-scale=1' /> {{ HTML::style('css/bootstrap.min.css') }}

;

@yield('content')

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



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')



Insert new book



{{ 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() }}



@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:



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 :


class BookController extends BaseController { }

?>

Setelah itu, buat fungsi untuk memasukan data buku baru ke dalam database:


class BookController extends BaseController { public function store(){

$book = new Book;

$book->title $book->author

= Input::get('title');; = 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

Form::open()

}}

file

app/views/newbook.blade.php

menjadi

'BookController@store'))

}}.

{{

ubah

Form::open(array('action'

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

menggunakan

telah Laravel.

membahas Yaitu

mengenai

dengan

cara

membuat

Create

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') @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">

@foreach($booksdata as $book) @endforeach
Title Author Description Price
{{ $book->title }} {{ $book->author }} {{ $book->description }} {{ $book->price }}
@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 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"> @foreach($booksdata as $book) @endforeach
Title Author Description Price #
{{ $book->title }} {{ $book->author }} {{ $book->description }} {{ $book->price }} {{ link_to_action('BookController@edit', 'edit', array($book>id))}}
@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

bernama editbook. Untuk

belum itu,

pada

membuat folder

buatlah file baru dengan nama editbook.blade.php : @extends('layout')

@section('content')



Edit book



view app/views

{{ 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' => 'formcontrol'))}}

{{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() }}



@stop Reload halaman yang menampilkan error tersebut dan anda akan melihat form edit beserta nilai dari masing-masing field. Update Untuk

melakukan

update,

tambahkan

pada BookController: public function update() { $id

= Input::get('id');

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

$book->title $book->author

= Input::get('title'); = Input::get('author');

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

$book->save();

= Input::get('price');

fungsi

„update‟

} 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"> @foreach($booksdata as $book)

@endforeach
Title Author Description Price #
{{ $book->title }} {{ $book->author }} {{ $book->description }} {{ $book->price }} {{ link_to_action('BookController@edit', 'edit', array($book>id))}} | {{ link_to_action('BookController@delete', 'delete', array($book->id))}}
@stop Perhatikan,

pada

kode

diatas

link_to_action('BookController@delete',

kita

menambahkan

'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

menambahkan route dan action yang

kita

belum

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

pada BookController, tambahkan berikut:

belum

dibuat,

untuk

itu

fungsi delete sebagai

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 bersangkutan

akan

dihapus.

delete maka data buku yang

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')

Register



@if(Session::has('pesan'))
{{ Session::get('pesan') }}
@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'))}}
{{Form::submit('Registerin Dong!', array('class' => 'btn btnprimary')) }} {{ Form::close() }}
@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')

Login




@if(Session::has('pesan_error'))
{{ Session::get('pesan_error') }}
@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() }}

@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

„DashboardController‟:
baru

bernama

} ?> 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')

Dashboard

@stop

Selanjutnya, perhatikan pada halaman dashboard diatas terdapat kode sebagai berikut:
  • 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

    Kemudian,

    memasukan jika

    kita

    http://localhost/dashboard

    email

    yang

    belum seharusnya

    sama

    login

    saat

    dan

    pengguna

    registrasi. mengakses

    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 commandline. 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 Laravelgenerators, 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 tergenerate. Maka, file yang tergenerate dengan menggunakan laravelgenerators 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:
    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:
    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');

    }

    } ?>
    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: 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

    menjadi sebagai berikut: Route::get('/', function() { $author = Author::find(1);

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

    route

    diatas

    $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:
    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
    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

    menggunakan

    berhubungan

    shopping

    cart,

    dengan barang

    toko yang

    online. akan

    Dengan

    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

    menambahkan composer.json

    shopping

    sebuah dan

    cart

    package

    tambahkan

    pada baru.

    Laravel

    Untuk

    itu,

    kita buka

    "gloudemans/shoppingcart":

    akan file "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/ bagi pengguna windows atau cd /var/www/ 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:
    } ?> 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:





    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: id) }}"> add to cart 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 $name

    = $product->id; = $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.

    cart


    {{ Message::success() }}
    Cart


    @foreach($cart_content as $cart)

    @endforeach

    No Product Name Price Quantity Action
    {{ $i }} {{ $cart->name }} {{ $cart->price }} {{ $cart->qty }} rowid) }}">delete


    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 $transaction->qty

    = $formid; = $cart->qty;

    $transaction->total_price = $cart->price * $cart>qty; $transaction->status

    $transaction->save();

    }

    Cart::destroy();

    echo "Checkout berhasil"; });

    = 'unpaid';

    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,

    transactions

    masih

    maka

    akan

    belum

    kita

    terjadi buat.

    error

    Untuk

    karena

    tabel

    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

    transaction.php sebagai berikut:
    } ?>

    sebuah

    model

    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 commandline.

    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 —- samasama 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

    Laravel,

    terdapat

    builder-nya

    Eloquent method

    maupun paginate

    pada

    query

    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) {{ $product->name }} {{ $product->price }} {{ $product->stock }} {{ Link::edit('product/edit/'.$product->id) }} | {{ Link::delete('product/delete/'.$product->id) }} @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

    pagination.blade.php.

    buat

    Contoh

    isi

    sebuah file

    file

    tersebut

    baru adalah

    bernama sebagai

    berikut:
    @if ($paginator->getLastPage() > 1) @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, mencoba!

    tetapi pagination

    yang

    barusan

    anda

    buat.

    Selamat

  • Related Documents

    Crud Laravel
    January 2021 2
    Tutorial Dasar Laravel
    January 2021 0
    Belajar Framework Laravel
    January 2021 1