Kamis, 07 Agustus 2014

Laravel: CRUD Part 3

Part 3 is ready! time to fight with code pemirsaahh hehe alay ya
kita gak mau berantem sama coding kok, kita cuma bakalan ngelanjutin tutorial kemaren yang part 1 sama part 2. Let's take a step on '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:


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, di-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, dijalankan lagi maka kali ini bukan halaman kosong yang kita dapatkan, tetapi akan terlihat error. 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 kita 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')) }}
Nah, sekarang coba deh edit data buku yang sudah dibuat dan klik update.



see ya in part 4 gaesss

Tidak ada komentar:

Posting Komentar