STUDI KASUS 1
Lakukan hal yang sama seperti yang sudah dijelaskan pada slide
sebelumnya untuk tabel t_kelas. Buatlah tampilan form untuk
menambahkan data kelas.
Implementasikan validasi untuk tabel t_kelas, cobalah beberapa validasi
yang berbeda selain yang sudah dijelaskan (tidak boleh validasi
numeric, string dan max)
Oke, untuk urutan pembuatannya bisa dijabarkan seperti ini :
- Buat file untuk menampung views tabel kelas
- Buat link untuk tambah data di views tabel kelas
- Buat route baru untuk kelas (index,create dan store-nya) di routes/web.php
- Buka/buat KelasController dan isi filenya dengan fungsi index,create dan store
- Buat form tambah data kelas di resources\views
- Cek di Browser routes-routes tadi
Untuk perintah pertama, yang harus dilakukan adalah membuat tabel dan form untuk data dari t_kelas.
1. Buat link untuk menghubungkan form utama dengan form
tambah data
buka file resources/views/kelas.blade.php kemudian
tambahkan ini di bawah tulisan data siswa
<a class="btn btn-sm btn-success" href="{{ url('/siswa/create') }}">Tambah Data</a>
2. Ubah Routes
buka file file routes/web.php lalu tambakan
Route::get('/siswa/create','SiswaController@create');
3. Menampilkan view dengan nama form yang terdapat pada
folder siswa
buka file app/Http/Controllers/SiswaController.php lalu
tambahkan
public function create(){
return view('siswa.form');
}
4. Membuat form untuk tambah data
buka file resources/views/siswa/form.blade.php jika kalian
belum membuat filenya, maka kalian buat saja dahulu kemudian tambahkan
<h1>Form Siswa</h1>
<form action="{{ url('/siswa') }}" method="POST">
@csrf
<div class="form-row">
<div class="form-group col-md-6">
<label for="inputEmail4">NIS</label>
<input type="text" class="form-control" id="inputEmail4" placeholder="NIS">
</div>
<div class="form-group col-md-6">
<label for="inputPassword4">Nama Lengkap</label>
<input type="text" class="form-control" id="inputPassword4" placeholder="Nama Lengkap">
</div>
</div>
<div class="form-group">
<label for="inputAddress">Address</label>
<input type="text" class="form-control" id="inputAddress" placeholder="1234 Main St">
</div>
<fieldset class="form-group">
<div class="row">
<legend class="col-form-label col-sm-2 pt-0">Jenis Kelamin</legend>
<div class="col-sm-10">
<div class="form-check">
<input class="form-check-input" type="radio" name="gridRadios" id="gridRadios1" value="L" {{ old('jenis_kelamin')=='L' ? 'checked' : ''}}>
<label class="form-check-label" for="gridRadios1">
L
</label>
</div>
<div class="form-check">
<input class="form-check-input" type="radio" name="gridRadios" id="gridRadios2" value="P" {{ old('jenis_kelamin')=='L' ? 'checked' : ''}}>
<label class="form-check-label" for="gridRadios2">
P
</label>
</div>
</div>
</div>
</fieldset>
<select class="custom-select">
<option selected>Golongan Darah</option>
<option value="A" {{ old('golongan_darah')=='A' ? 'checked' : ''}}>A</option>
<option value="B" {{ old('golongan_darah')=='B' ? 'checked' : ''}}>B</option>
<option value="AB" {{ old('golongan_darah')=='AB' ? 'checked' : ''}}>AB</option>
<option value="O" {{ old('golongan_darah')=='O' ? 'checked' : ''}}>O</option>
</select>
<div class="form-group">
<div class="form-check">
<input class="form-check-input" type="checkbox" id="gridCheck">
<label class="form-check-label" for="gridCheck">
Check me out
</label>
</div>
</div>
<button type="submit" class="btn btn-primary" value="Simpan">Simpan</button>
</form>
@endsection
Nah diatas terdapat sebuah fungsi @csrf yang berfungsi untuk
memproteksi Laravel dari serangan yang mengerikan yaitu serangan CSRF, apaan
tuh min? CSRF sendiri adalah cross site request forgery, apa maksudnya nih??
Maksudnya adalah csrf ini merupakan salah satu lubang di web app yang bekerja
dengan cara mengeksploitasi suatu aksi dan eksploitasi ini memanfaatkan
otentikasi milik salah satu user.
5. Tambahkan route POST
buka file routes/web.php lalu tambahkan
Route::post('/siswa','SiswaController@store');
6. Tambahkan fungsi store
buka file app/Http/Controllers/SiswaController.php lalu
tambahkan ini dibawah fungsi create
public function store(Request $request){
$rule=[
'nis' => 'required|numeric|digits:10|unique:t_siswa',
'nama_lengkap' => 'required|string',
'jenkel' => 'required',
'goldar' => 'required',
];
$this->validate($request, $rule);
$input = $request->all();
unset($input['_token']);
$status = \DB::table('t_siswa')->insert($input);
if($status){
return redirect('/siswa')->with('success','Data berhasil ditambahkan !!!');
} else {
return redirect('/siswa/create')->with('error','Data gagal ditambahkan !!!');
}
}
}
Nah setelah semua itu , cek di browser dengan masukkan localhost/[nama_folder_project]/public/kelas. Cobalah untuk menambah data
1-2
Perintahnya adalah untuk memasukkan validasi selain numeric,string dan max
Seperti yang sudah ada di KelasController@store, bisa dilihat dalam $rule
$rule = [
'nama_kelas' => 'bail|required|string',
'jurusan' => 'required',
'lokasi_ruangan' => 'size:5',
'nama_wali_kelas' => 'alpha',
Penjelasannya :
bail
Jika validasi yang ini gagal, hentikan validasi yang
selanjutnya.
Jadi error message yang ditampilkan jika bail ini gagal
hanya validasi ini, atau singkatnya berhenti menjalankan validasi selanjutya jika validasi
sebelumnya gagal (error)
alpha
Memaksa field ini berisi String dengan karakter alfabet saja
Kebalikan dari numeric, atau lebih singkatnya hampir mirip dengan max cuman digit ini di khususkan untuk
numeric/angka
STUDI KASUS 2
Temukan BUG nya dan pecahkan solusi dari BUG
tersebut!
Dan ternyata Bug nya adalah
- Duplicate entry
Caranya menambahkan Kodingan dibawah ini dengan $rule
'nis' => 'required|numeric|unique:t_siswa,nis'
STUDI KASUS 3
Sudah menangkap maksud dari fungsi old? Implementasikan fungsi tersebut untuk
field berjenis radio button dan field berjenis select option pada form siswa (Field
jenkel dan goldar)
Fungsi old disini adalah untuk menampilkan value lama dari input User yang gagal validasinya.
Admin sudah menggunakannya di input nis dan nama (sesuai tutorial).
Nah sekarang tinggal melanjutkannya ke radio button jenis kelamin dan select goldar
Nah sekarang tinggal melanjutkannya ke radio button jenis kelamin dan select goldar
RADIO BUTTON
<input class="form-check-input" type="radio" name="gridRadios" id="gridRadios1" value="L" {{ old('jenis_kelamin')=='L' ? 'checked' : ''}}>
<input class="form-check-input" type="radio" name="gridRadios" id="gridRadios2" value="P" {{ old('jenis_kelamin')=='L' ? 'checked' : ''}}>
SELECTED ITEM
<option value="A" {{ old('goldar') == 'A' ? 'selected' : '' }}>A</option>
<option value="B" {{ old('goldar') == 'B' ? 'selected' : '' }}>B</option>
<option value="O" {{ old('goldar') == 'O' ? 'selected' : '' }}>O</option>
<option value="AB" {{ old('goldar') == 'AB' ? 'selected' : '' }}>AB</option>
Mungkin segitu aja dari Admin
Mohon maaf bila ada kesalahan.
Selamat beraktivitas kembali dan sampai jumpa di lain waktu😃
Comments
Post a Comment