Jumat, 08 Agustus 2014

Laravel: CRUD Part 4

Eittss, sebelumnya silahkan lihat dulu postingan saya sebelum ini, karena ini bakalan jadi final touch kita hehe

Part 1, Part 2, Part 3

Nah kalau sudah, mari kita lanjutkan ke part terakhir, yaitu 'delete'.
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))}} 
<td>| {{ 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. 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, dijalankan lagi pada browser maka tampilan akan berjalan normal dan sudah terdapat link delete didalam tabel. Namun, apabila link tersebut di-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 di-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 di-klik link delete maka data buku yang bersangkutan akan dihapus. Perhatikan bahwa kode return Redirect::to('booklist'); digunakan untuk mengembalikan (redirect) ke halaman dengan route ‘booklist’.



Setelah di-klik delete maka menjadi seperti berikut:


Oh iya, aku punya tantangan nih. Bisa gabungin fungsi add new book sama booklist yang kayak gini gak? Kalo bisa comment yaa kita sharing bareng hihi. Ini punya saya, dan alhamdulillah tidak ada error.


see ya!

Tidak ada komentar:

Posting Komentar