Menambahkan data ke basis data bukanlah hal yang paling asing untuk dilakukan dan itu sangat mudah digunakan di Laravel. Hanya melakukan beberapa langkah saja Anda bisa menambahkan data dengan mudah. Pada tutorial ini saya juga membahas bagaimana membuat password hash, ini saya lakukan karena menggunakan tabel users
.
Daftar isi:
- 1. Skrip create.blade.php
- 2. Perbarui skrip blade
- 3. Konfirgurasi fungsi create() dan store()
- 4. Bonus - Kata sandi tidak di hash
1. Skrip create.blade.php
Buatlah berkas create.blade.php
pada direktori users
kemudian salin dan tempelkan skrip dibawah ini ke dalam berkas tersebut.
@extends('layouts.default', [
'title' => 'Tambah user'
])
@section('content')
<div class="level">
<div class="level-left">
<div class="level-item">
<h1 class="title is-4">Tambah user</h1>
</div>
</div>
<div class="level-right">
<div class="level-item">
<a href="{{ route('users.index') }}" class="button is-light">Kembali</a>
</div>
</div>
</div>
<hr>
<form action="#" method="post">
@csrf
<div class="field">
<label for="name" class="label">Nama Lengkap</label>
<div class="control">
<input type="text" name="name" id="name" class="input" value="{{ old('name') }}">
</div>
</div>
<div class="field">
<label for="email" class="label">Alamat E-Mail</label>
<div class="control">
<input type="email" name="email" id="email" class="input" value="{{ old('email') }}">
</div>
</div>
<div class="field">
<label for="password" class="label">Kata Sandi</label>
<div class="control">
<input type="password" name="password" id="password" class="input">
</div>
</div>
<div class="field">
<label for="password_confirmation" class="label">Konfirgurasi Kata Sandi</label>
<div class="control">
<input type="password" name="password_confirmation" id="password_confirmation" class="input">
</div>
</div>
<div class="field">
<button type="submit" class="button is-success">Simpan</button>
</div>
</form>
@endsection
Catatan: Bagi Anda yang belum tahu fungsi
old()
dimana suatu variabel bila ada maka akan menampilkan nilai sebelumnya yang dimasukan. Maksudnya ialah jika terdapat proses simpan yang gagal maka data yang dimasukan tetap ada.
2. Perbarui skrip blade
Disini perbaruilah skrip yang telah ditentukan pada masing-masing berkas:
Perbarui skrip create.blade.php
Hal ini dilakukan saat terjadinya proses submit maka akan masuk ke dalam routing yang sudah ditentukan. Jadi akan masuk ke fungsi store()
, silakan perbarui skrip dari berkas tersebut.
<form action="#" method="post">
// menjadi
<form action="{{ route('users.store') }}" method="post">
Perbarui skrip berkas index.blade.php
Sekarang saatnya menambahkan tautan ke halaman create. Silakan masuk ke berkas index.blade.php
carilah skrip yang sesuai seperti dibawah ini.
<a href="#" class="button is-light">Tambah</a>
// menjadi
<a href="{{ route('users.create') }}" class="button is-light">Tambah</a>
3. Konfirgurasi fungsi create() dan store()
Silakan berahli ke berkas UserController.php
untuk melakukan penambahan skrip yang telah disesuaikan dibawah ini:
Fungsi create()
Fungsi create()
akan memanggil berkas create.blade.php
dan tautannya ada di berkas index.blade.php
dengan tombol Tambah
. Silakan sesuaikan skrip dibawah ini:
public function create()
{
return view('users.create');
}
Fungsi store()
Saat dilakukan submit pada form create maka akan dilanjutkan ke fungsi store()
untuk menambahkan data ke basis data. Silakan sesuaikan skrip dibawah ini:
public function store(Request $request)
{
User::create(
$request->all()
);
return redirect()->route('users.index');
}
Setelah melakukan submit secara otomatis halaman akan diahlikan ke halaman utama users index.
4. Bonus - Kata sandi tidak di hash
Pada kenyataannya proses penambahan data pengguna berhasil tersimpan dengan benar. Tetapi kenyataannya itu tidak benar-benar baik pada kolom password, karena kata sandi belum dilakukan hashing. Hal itu bisa dilakukan dengan mudah, silakan masuk ke berkas User.php
pada direktori Models
. Silakan sesuaikan skrip dibawah ini dengan benar:
use Illuminate\Support\Facades\Hash;
...
class User extends Authenticatable
{
...
protected $appends = [
'password'
];
public function setPasswordAttribute($pass)
{
$this->attributes['password'] = Hash::make($pass);
}
}
Jadi, saat terjadinya proses submit maka variabel $appends
akan di eksekusi ternyata ada nilai password
dan sedangkan terdapat fungsi setPasswordAttribute()
maksudnya atur variabel atribut password. Maka kata sandi yang dimasukan akan diproses pada fungsi tersebut sebelum memasukannya ke dalam basis data sebagai data yang tersimpan.