Kamis, 07 Agustus 2014

Laravel: CRUD Part 1

Hello gaess kita ketemu lagi. Masih seputar Laravel nih, jangan bosen bosen yaa bacanya *pasang muka manis* hihi
Di postingan sebelumnya kan udah dibahas nih gimana bikin hello world (klik) dan juga udah dijelasin apa itu migrasi (klik), sekarang kita bikin aplikasi sederhana yang ada CRUD nya yuk.
Untuk tutorial kali ini, saya mau bagi jadi 4 part yaa. Kenapa? karena kalau dijadikan satu nanti terlalu panjang jadi pada males bacanya kan kalian :p
Soooooo, here we goooooo

Twitter Bootstrap

Udah tau belom sih twitter bootstrap itu apa? Kalo belom gugling aja deh ya haha. Yang jelas kita perlu bootstrap ini untuk membantu kita dalam membuat user interface. Af first, download bootstrap here. Setelah itu extract bootstrap-nya dan kita bakalan dapet 3 folder. Nah sekarang pindahkan 3 folder itu ke dalam folder public.


Done!

Migrate database

Oh iya, aplikasi yang akan kita buat adalah sebuah aplikasi sederhana penjualan buku. Jadi mari kita buat dahulu tabel yang akan menampung data buku yang akan dijual. Jalankan perintah php artisan migrate:make create_books_table. 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\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateBooksTable extends Migration {

    /**
     * Run the migrations.
     *
     * @return void
     */
    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();
      });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    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`, bisa dilihat melalui phpmyadmin.


CRUD

Create, read, update, delete. Disini kita bahas satu persatu aja ya biar lebih jelas hehe.

Create

Nih yang pertama. Maksudnya create disini adalah memasukkan data ke dalam database. Untuk itu, kita akan menggunakan sebuah form. Buat 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>@maulidyta | CRUD</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> 
Perlu diketahui, Laravel menggunakan blade sebagai template engine. 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 disimpan 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 di browser, tampilannya kayak gini nih:



 Memasukkan 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 yaa.

Oke, 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();

  }
}

?>


Last Touch!

Oke, 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. Sekarang kita bisa mencobanya dengan memasukan data pada form kemudian tekan tombol submit. Lalu, cek di database apakah data yang diinputkan sudah masuk atau belum.


Keep waiting for the next post yaa, coming soon :p

Tidak ada komentar:

Posting Komentar