menu

Laravel - CRUD (update) pada laravel 4.2


Posting kali ini melanjutkan posting sebelumnya tentang create pada laravel,

Untuk melengkapi sebuah sistem CRUD maka sudah seharusnya sistem tersebut memiliki fungsi yang dapat mengedit data yang ada pada database.

Yang diperlukan dalam fungsi edit adalah parameter id dari data tabel yang akan diedit, parameter id ini didapat dari sebuah parameter yang ada pada url yang sudah kita lempar sebelumnya.

Untuk melakukan tutorial ini diwajibkan melakukan tutorial sebelumnya, dapat dilihat disini..

Oke langsung saja berikut tutorialnya.,.,

Pertama buat route baru pada file routes,


Tambahkan code berikut pada file routes
Route::get('update/{id}', 'UpdateController@updateUser');
Route::post('update/{id}', 'UpdateController@updatepostUser');
Selanjutnya buat controller baru dengan nama UpdateController seperti ini

Isi dengan Code berikut
<?php

class UpdateController extends BaseController
{
 public function updateUser($id)
 {
  $users = User::where('id', $id)->first();
  //dd($users);
  return View::make('web.updateUser')->with('data_user', $users);
 }

 public function updatepostUser($id)
 {
  //var_dump($_POST);
  $validator = Validator::make(
   Input::all(),
   array(
    "name"     => "required",
    "username"    => "required",
    "email"     => "required|email",
   )
  );
  if ($validator->passes()) {
      $user = User::find($id);
      $user->name     = Input::get('name');
      $user->username = Input::get('username');
      $user->email    = Input::get('email');
      $user->save();

      return Redirect::to('users');
   }
   else {
      return Redirect::to('update/'.$id)
       ->withErrors($validator)
       ->withInput();
   }
 }
}
dd($users); digunakan untuk mengecek apakah query dari $users benar atau tidak.
Query where('id', $id)->first(); digunakan untuk mencari data tabel dengan id=$id, dimana $id merupakan url yang kita lempar pada routes: 'update/{id} sehingga pada url akan tampak seperti ini



Kemudian buat file View baru pada path views/web/updateUser seperti ini


Isi dengan Code berikut
@extends('layouts/web/master')
@section('content')
 <?php $title = "Update User" ?>
 <div class="isi">
  <form method="post" action="">
  <table>
   <tr>
    <td>Name</td>
    <td nowrap>:</td>
    <td><input type="text" name="name" value="{{ $data_user['name'] }}"><span style="color:red"><?php echo $errors->first('email') ?></td>
   </tr>
   <tr>
    <td>Username</td>
    <td nowrap>:</td>
    <td><input type="text" name="username" value="{{ $data_user['username'] }}"><span style="color:red"><?php echo $errors->first('email') ?></td>
   </tr>
   <tr>
    <td>Email</td>
    <td nowrap>:</td>
    <td><input type="text" name="email" value="{{ $data_user['email'] }}"><span style="color:red"><?php echo $errors->first('email') ?></span></td>
   </tr>
   <tr>
    <td colspan="3">
     <br>
     <input type="submit" class="btn" value="Submit">
    </td>
   </tr>
  </table>
  </form>
 </div>
@stop
Kita menambahkan sintax value="{{ $data_user['username'] }}" yang berfungsi untuk menampilkan data tabel username dengan id yang sudah ditetapkan pada controller sebelumnya yaitu: where('id', $id)->first().

Selanjutnya menambahkan tombol edit pada views/web/readUser.blade.php seperti ini
<table border="1">
     <tr>
        <th>ID</th>
        <th>NAME</th>
        <th>USERNAME</th>
        <th>EMAIL</th>
        <th>PASSWORD</th>
        <th>CREATED AT</th>
        <th>UPDATED AT</th>
        <th>ACTION</th>
     </tr>
     @foreach($data_user as $users)
       <tr>
          <td>{{ $users->id }}</td>
          <td>{{ $users->name }}</td>
          <td>{{ $users->username }}</td>
          <td>{{ $users->email }}</td>
          <td>{{ $users->password }}</td>
          <td>{{ $users->created_at }}</td>
          <td>{{ $users->updated_at }}</td>
          <td><a href="{{ URL::to('update/'.$users->id) }}">Edit</td>
       </tr>
     @endforeach
</table>
Sintax 'update/'.$users->id digunakan untuk melempar id data tabel yang akan diedit pada url.

Sehingga tampilan akhir akan seperti ini



===DONE!===