6
oleh : Duman Care Khrisne
Modul ini dibuat karena saya tidak dapat memanfaatkan kembali Laravel 4.2, yang akan
digunakan dalam pelatihan 4 konsentrasi PS. Teknik Elektro, saya mohon maaf karena
laravel 4.2 memiliki app key yang sudah deprecate dan tidak didukung kembali.
Semoga modul latihan singkat ini dapat membantu peserta mendapatkan bantuan dalam
menggunakan Laravel
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=duman
DB_USERNAME=root
DB_PASSWORD=
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Schema; //ini ditambahin
/**
* Register any application services.
*
* @return void
*/
public function register()
{
//
}
}
dengan ini laravel akan membuatkan kita dua buah tabel users dan password_reset
secara otomatis
selanjutnya kita akan membuat model untuk data yang ingin kita simpan, dalam contoh
ini saya ingin menyimpan Mahasiswa dalam web. Cukup ketik perintah dalam command
line
maka dalam folder app akan muncul model dengan nama Mahasiswa.php dan file
migrasi create_mahasiswa_tabel.php pada folder database/migration.
Buka file migration yang baru saja terbentuk dan definisikan struktur tabel mahasiswa
agar seperti :
public function up()
{
Schema::create('mahasiswas', function (Blueprint $table) {
$table->increments('id');
$table->string('nim');
$table->string('nama');
$table->timestamps();
});
}
Id tabel auto increment dan data dalam tabel adalah dua buah string nim dan nama.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>CRUD Mahasiswa</title>
<link rel="stylesheet" href="{{asset('css/app.css')}}">
</head>
<body>
<br><br>
<div class="container">
<h2>Input Mahasiswa Baru</h2>
<br/>
<form method="post">
<div class="row">
<div class="form-group col-md-4">
<label
for="name">NIM:</label>
<input type="text"
class="form-control" name="nim">
</div>
</div>
<div class="row">
<div class="form-group col-md-4">
<label
for="price">Name:</label>
<input type="text"
class="form-control" name="nama">
</div>
</div>
<div class="row">
<div class="form-group col-md-4">
<button type="submit"
class="btn btn-success" style="marginleft:38px">Insert Mahasiswa</button>
</div>
</div>
</form>
</div>
</body>
</html>
Simpan dengan nama input.blade.php dan view sudah selasai kita siapkan.
Sekarang kita harus membuat controller untuk crud mahasiswa kita, cukup ketikkan
pada command line:
pada command line kita periksa dulu route apa saja yang sudah ada pada project kita dengan
mengetik :
maka akan tampil route list kita saat ini, namun belum ada route untuk controler
mahasiswa kita. Untuk itu perlu kita tambahkan baris pada web.php pada folder /routes
coba ulangi perintah diatas dan seharusnya kita dapatkan route list untuk controller
mahasiswa kita.
Setelahnya kita bisa kelola controller kita, buka file MahasiswaController.php, dan
tambahkan code pada fungsi create() agar menjadi seperti :
Setelah menampilkan form, kita dapat mengisi form, tapi kita isi dulu validasi terhadap
form yang sudah kita buat sehingga menjadi :
Untuk informasi mengenai csrf -> silahkan melakukan googling ke SO, atau nanti saya
jelaskan
Kita juga harus mengedit Mahasiswa.php dengan menambahkan fillabel (field yang ingin
diisi) sehingga menjadi :
namespace App;
use Illuminate\Database\Eloquent\Model;
class Mahasiswa extends Model
{
protected $fillable = ['nim','nama'];
}
Jika kita melihat routes maka ada post request yang mempunyai rute /test dan fungsi
store dalam file MahasiswaController.php. Sehingga kita perlu kode untuk fungsi store
dalam rangka menyimpan data ke dalam database.
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Mahasiswa;
Mahasiswa::create($mahasiswa);
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>CRUD Mahasiswa</title>
<link rel="stylesheet" href="{{asset('css/app.css')}}">
</head>
<body>
<br><br>
<div class="container">
<h2>Input Mahasiswa Baru</h2>
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
@if (\Session::has('success'))
<div class="alert alert-success">
<p>{{ \Session::get('success') }}</p>
</div>
@endif
<br/>
<form method="post" action="{{url('test')}}">
{{csrf_field()}}
<div class="row">
<div class="form-group col-md-4">
<label
for="name">NIM:</label>
<input type="text"
class="form-control" name="nim">
</div>
</div>
<div class="row">
<div class="form-group col-md-4">
<label
for="price">Name:</label>
<input type="text"
class="form-control" name="nama">
</div>
</div>
<div class="row">
<div class="form-group col-md-4">
<button type="submit"
class="btn btn-success" style="marginleft:38px">Insert Mahasiswa</button>
</div>
</div>
</form>
</div>
</body>
</html>
Serve lagi melalui command prompt dan uji coba proses inputnya. Seharusnya input
berhasil dan pesannya muncul, kalau ada yang tidak sesuai akan muncul pesan
kesalahan.
<!DOCTYPEhtml>
<html>
<head>
<meta charset="utf-8">
<title>CRUD Mahasiswa</title>
<link rel="stylesheet" href="{{asset('css/app.css')}}">
</head>
<body>
<div class="container">
<br/>
@if(\Session::has('success'))
<div class="alert alert-success">
<p>{{ \Session::get('success') }}</p>
</div><br/>
@endif
<table class="table table-striped">
<thead>
<tr>
<th>ID</th>
<th>Nim</th>
<th>Nama</th>
<th colspan="2">Action</th>
</tr>
</thead>
<tbody>
@foreach($mahasiswas as $mahasiswa)
<tr>
<td>{{$mahasiswa['id']}}</td>
<td>{{$mahasiswa['nim']}}</td>
<td>{{$mahasiswa['nama']}}</td>
<td><a href="" class="btn
btn-warning">Ubah</a></td>
<td>
<button class="btn
btn-danger" type="submit">Hapus</button>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</body>
</html>
Lalu pada MahasiswaController.php, kita tambahkan baris kode pada function index-nya,
sehingga menjadi seperti :
public function index()
{
$mahasiswas = Mahasiswa::all()->toArray();
return view('test.index', compact('mahasiswas'));
}
Sehingga ketika kita serve kembali dan jalankan pada browser kita dapatkan tampilan
seperti berikut :
6. Buat Modul Update
Untuk memulai menlakukan update kita harus sedikit mengubah view form pada
index.blade.php, terutama pada tombol ubah yang belum kita isi fungsi-nya, ubah
kodenya agar menjadi seperti berikut :
<td><a href="{{action('ProductController@edit', $product['id'])}}"
class="btn btn-warning">Ubah</a></td>
Langkah selanjutnya adalah melakukan perubahan terhadap fungsi edit di dalam file
MahasiswaController.php sehingga dapat menampilkan form untuk perubahan
informasi mahasiswa. Berikut ini adalah kode untuk fungsi edit :
public function edit($id)
{
$mahasiswa = Mahasiswa::find($id);
return view('test.edit',compact('mahasiswa','id'));
}
Dalam kode untuk edit kita memanggil view yang bernama edit (edit.blade.php) pada
folder resource/test, yang belum kita punya, maka langkah berikutnya adalah membuat
view edit pada folder test
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>CRUD Mahasiswa</title>
<link rel="stylesheet" href="{{asset('css/app.css')}}">
</head>
<body>
<div class="container">
<br/>
<h2>Perubahan Data Mahasiswa</h2><br/>
@if($errors->any())
<div class="alert alert-danger">
<ul>
@foreach($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
<br/>
@endif
<form method="post"
action="{{action('MahasiswaController@update',$id)}}">
{{csrf_field()}}
<input name="_method" type="hidden"
value="PATCH">
<div class="row">
<div class="form-group col-md-4">
<label for="nim">Nim:</label>
<input type="text"
class="form-control" name="nim" value="{{$mahasiswa->nim}}">
</div>
</div>
<div class="row">
<div class="form-group col-md-4">
<label
for="nama">Nama:</label>
<input type="text"
class="form-control" name="nama" value="{{$mahasiswa->nama}}">
</div>
</div>
<div class="row">
<div class="form-group col-md-4">
<button type="submit" class="btnbtn-
success" style="marginleft:38px">Update Data</button>
</div>
</form>
</div>
</body>
</html>
Kita lihat pada kode yang saya highlight, ada kode yang harus kita buat dulu untuk muara
ketika form update di-submit, jika ini kita tidak buat maka laravel akan error karena
kebingungan mencari kemana data akan dikirim. Pada MahasiswaController.php, fungsi
update harus kita isi logika seperti berikut :
public function update(Request $request, $id)
{
$mahasiswa = Mahasiswa::find($id);
$this->validate(request(), [
'nim' => 'required',
'nama' => 'required'
]);
$mahasiswa->name = $request->get('name');
$mahasiswa->price = $request->get('price');
$mahasiswa->save();
return redirect('test')->with('success','Data Mahasiswa Update');
}
Lalu kita tinggal menuliskan logika di fungsi destroy pada MahasiswaController.php dengan
kode sumber seperti berikut :
public function destroy($id)
{
$mahasiswa = Mahasiswa::find($id);
$Mahasiswa->delete();
return redirect('test')->with('success','Data Mahasiswa Delete');
}
Selesai sudah CRUD sederhana dengan laravel, jika kita buat dengan php native mungkin
akan lama, tapi dengan for each, sintaks insert, update, delete yang sudah dibantu oleh
controller laravel pekerjaannya jadi lebih mudah, semoga modul ini bermanfaat dan
menebus pelatihan kita di hari pertama
Terimakasih atas atensinya, semoga bermanfaat untuk catatan dan pengembangan lain
dikemudian hari.