Kamis, 04 April 2019

INTRODUCING ELOQUENT

Assalamualaikum teman-teman yang sedang melihat blog saya kali ini hihi! Apa kabar semuanya? Semoga selalu dalam keadaan sehat wal'afiat dan selalu dalam lindungan-Nya ya. Kali ini informasi apa sih yang bakal saya bagikan? Nah seperti yang kalian liat pada judul blog saya. Kali ini, saya akan membagikan informasi tentang Pengenalan metode ELOQUENT (masih menggunakan framework laravel). Semoga informasi yang saya sampaikan kali ini dapat bermanfaat bagi teman teman ya. Langsung saja kita mulai yuk..

DIBUAT PADA TABEL SISWA
1. Buat model baru pada folder app dengan nama Siswa.php
  • $table : Variabel untuk menentukan nama tabel pada database untuk model ini.Variabel untuk menentukan nama tabel pada database untuk model ini.
  • $fillable : Variabel untuk menentukan field apa saja yang akan di-fill / di-insert ke tabel pada model ini. Biasanya digunakan untuk mass-assignment
2. Modifikasi file app/Http/Controllers/SiswaController.php
  • Seluruh method yang dipanggil setelah inisialisasi Eloquent sama dengan penggunaan DB Facades.
  • \App\Siswa::find($id) = Method find hanya ada pada Eloquent Model, digunakan untuk mencari data pada model berdasarkan primary key. Biasanya primary key yang dicari adalah id. Selain id anda dapat mengaturnya pada model dengan meng-override variabel public $primaryKey. Jika dalam Query SQL, fungsi diatas akan menciptakan query sebagai berikut: SELECT * FROM t_siswa WHERE id = ‘$id’
STUDI KASUS 1

Lakukan hal yang sama seperti yang sudah dijelaskan pada slide sebelumnya untuk tabel t_kelas (Create, Edit dan Delete).


1. Buat model baru pada folder app dengan nama Kelas.php
xampp\htdocs\laravel\app\Kelas.php
2. Modifikasi file KelasController.php
xampp/htdocs/laravel/app/Http/Controllers/SiswaController.php

STUDI KASUS 2
Buatlah tabel baru untuk menyimpan data guru dengan field nip, nama_guru, jenis_kelamin, alamat. Buatlah migration nya, dan view untuk CRUD nya. Cobalah gunakan metode ORM untuk insert dan update data untuk tabel data guru tersebut

1. Buatlah tabel t_guru dengan field nip, nama_guru, jenis_kelamin, alamat.
* php artisan make:migration create_t_guru

* Buka filenya pada database/migrations

* Lakukan pengecekan pada table

* Lihat struktur table di PhpMyAdmin

* Buat GuruController

* Buka file xampp\htdocs\laravel\app\Http\Controllers\GuruController.php

* Panggil setiap route tersebut di web.php
xampp\htdocs\laravel\routes\web.php
* Buat guru.blade.php untuk menampilkan data
xampp\htdocs\laravel\resources\views\guru.blade.php

Sebelumnya sudah saya isi data di phpmyadmin

* Buat file resources/views/guru/form.blade.php

STUDI KASUS 3
Bisakah anda menjelaskan perbedaan yang signifikan antara penggunaan DB Facades dan Eloquent?
- Dalam segi syntax, penggunaan DB Facades tidak terlalu mudah dihapami namun memang lebih simple. Sementara pada DB Eloquent syntaxnya lebih panjang, namun lebih mudah dipahami karna setiap variable pada suatu table dilakukan penjabaran terlebih dahulu

Nah teman-teman, sekian saja informasi yang dapat saya bagikan. Dilain waktu saya akan membagikan informasi lagi kepada teman-teman, jadi jangan bosan untuk mengunjungi blog sayaa ya. Selamat belajar dan sehat selalu!!💕💕

Minggu, 10 Maret 2019

Edit & Delete Data with DB

Hallo-hallooo, kembali lagi nih di blog aku hihii. Kali ini aku mau bahas Edit & Delete Data with DB , ummm.. Masih di laravel yaa! Semoga informasi ini dapat bermanfaat selalu bagi para pembaca, dan dapat menginspirasi kalian untuk ngoding whehehe. Langsung ajaa yu kitaa mulaiiii 😊

STUDI KASUS 1
Fungsi function update dan destroy?

Function Update
$rule = [
            'nama_kelas' => 'required',
            'jurusan' => 'required',
            'lokasi_ruangan' => 'required',
            'nama_wali_kelas' => 'required',
        ];
- Digunakan untuk membuat array asosiatif yang didalamnya berisi key yang berupa nama field yang ada pada form dan value yang berisi string valiadasinya.

$this->validate($request, $rule);
- Digunakan untuk memvalidasi input sesuai request dan rule yang diharapkan.

$input = $request->all();
- Digunakan untuk menangkap seluruh request yang dikirim dari view form.

unset($input['_token']);
- Digunakan untuk menghapus data dengan key _token pada array asosiatif $input karena data tersebut tidak ada didalam tabel (tidak akan di-insert)

$status = \DB::table('t_kelas')->where('id', $id)->update($input);
- Digunakan untuk melakukan update (perubahan) data ke tabel t_kelas, dimana datanya berasal dari array $input.

if ($status) {
            return redirect('/kelas')->with('success', 'Data berhasil diubah!');
        } else {
            return redirect('/kelas/create')->with('error', 'Data gagal diubah');
        }
- Baris diatas memeriksa apakah update data berhasil atau tidak.
  • Jika berhasil maka arahkan tampilan kembali ke alamat /kelas (Menampilkan Tabel Data Kelas) dengan membawa session success dengan pesan ‘Data berhasil ditambahkan’.
  • Jika gagal maka arahkan tampilan kembali ke alamat /kelas/create (Menampilkan kembali form input data kelas) dengan membawa session error dengan pesan ‘Data gagal ditambahkan’
Function Destroy

$status = \DB::table('t_kelas')->where('id', $id)->update($input);
- Digunakan untuk melakukan delete (penghapusan) data dari tabel t_kelas, dimana datanya berasal dari array $input.

if ($status) {
            return redirect('/kelas')->with('success', 'Data berhasil diubah!');
        } else {
            return redirect('/kelas/create')->with('error', 'Data gagal diubah');
        }
- Baris diatas memeriksa apakah delte data berhasil atau tidak.
  • Jika berhasil maka arahkan tampilan kembali ke alamat /kelas (Menampilkan Tabel Data Kelas) dengan membawa session success dengan pesan ‘Data berhasil ditambahkan’.
  • Jika gagal maka arahkan tampilan kembali ke alamat /kelas/create (Menampilkan kembali form input data kelas) dengan membawa session error dengan pesan ‘Data gagal ditambahkan’

STUDI KASUS 2

- Tambahkan fungsi edit & delete pada tabel kelas
Ditambahkan pada kelas.blade.php

Ditambahkan pada web.php

Ditambahkan pada KelasController.php

Ubah pada form.blade.php

Hasilnya :
[EDIT]
Klik edit

Masuk ke form

Misalnya kita ingin melakukan perubahan pada wali kelas, kita ubah menjadi 'Aldi' saja. Kemudian klik simpan.

Muncul pesan session success, dan data terganti

[ DELETE ]
Misalnya kita akan menghapus kelas XI MM, klik button delete.

Muncul pesan session success, dan data kelas XI MM terhapus.
Nah sekian saja informasi yang dapat saya bagikan, semogaa selalu bermanfaat bagi teman-teman. Keep Happy & Stay Healthy guyss!💕💕

Minggu, 03 Maret 2019

[ CREATE DATA WITH DB , VALIDATION, OLD INPUT ] | SESI 4

Hallo teman-temanku, kembali lagi nih sama saya di blog tercinta ini hihi. Kali ini saya bakal membagikan informasi mengenai Create Data with Database Facade, Validation, dan Old Input pada Laravel. Sebelumnya, jangan lupa kunjungin halaman blog saya agar dapat mengikuti pembahasan kali ini, khususnya mengenai Laravel! Pada penasaran ga? Pasti penasaran dong kan ya, kalau gitu kita sama sama simak penjelasannya dulu yuu!

STUDI KASUS 1 

Create Data with Database Facade

1. Buka file resources/views/kelas.blade.php, tambahkan link menuju form add

- url : Digunakan untuk menciptakan URL menuju URL tertentu. URL yang diciptakan akan ditambahkan base_url dari project anda.

note: url(‘/kelas/create’), maka yang akan muncul di HTML nya adalah http://localhost/laravel/public/kelas/create

2. Buka file routes/web.php, tambahkan route create

- Perintah tersebut akan mengarahkan route /kelas/create ke function create pada controller KelasController

3. Buka file app/Http/Controllers/KelasController.php

-  Digunakan untuk menampilkan view dengan nama form yang terdapat pada folder kelas

4. Buat file resources/views/kelas/form.blade.php
@csrf
- csrf_token() = Digunakan untuk membuat csrf token
- csrf_field() = Digunakan untuk membuat input hidden _token beserta token nya
  <input type=“hidden” name=“_token” value=“xxxxxxxxx”
- @csrf = Fitur dari blade, sama dengan csrf_field, namun tidak perlu menggunakan bracket ( {{ }} ) untuk menampilkannya di HTML.
  • Setiap request yang memiliki method selain GET (POST, PUT, PATCH, DELETE), syntax diatas wajib digunakan didalam form sebagai fungsi keamanan dari serangan CSRF.
  • CSRF (Cross-Site Request Forgery) merupakan bentuk eksploitasi website yang dieksekusi atas wewenang korban, tanpa dikehendakinya. CSRF menipu web site melalui request dari user yang dipercaya. Serangan bekerja melalui link atau script pada halaman site yang diakses user
5. Buka file routes/web.php, tambahkan route post

- Perintah tersebut akan mengarahkan route /kelas dengan method request POST ke function store pada controller KelasController

6. Buka file app/Http/Controllers/KelasController.php, tambahkan fungsi store

@input = $request->all();
- Digunakan untuk menangkap seluruh request yang dikirim dari view form.

unset($input['_token']);
- Digunakan untuk menghapus data dengan key _token pada array asosiatif $input karena data tersebut tidak ada didalam tabel (tidak akan di-insert).

$status = \DB::table('t_kelas')->insert($input);
- Untuk melakukan insert data ke tabel t_kelas dimana datanya berasal dari array $input

if ($status) {
    return redirect('/kelas')->with('success', 'Data berhasil ditambahkan!');
    } else {
    return redirect('/kelas/create')->with('error', 'Data gagal ditambahkan!');
    }
- Baris diatas memeriksa apakah input data berhasil atau tidak.
- Jika berhasil maka arahkan tampilan kembali ke alamat /kelas (Menampilkan Tabel Data Kelas) dengan membawa session success dengan pesan ‘Data berhasil ditambahkan’
- Jika gagal maka arahkan tampilan kembali ke alamat /kelas/create (Menampilkan kembali form input data kelas) dengan membawa session error dengan pesan ‘Data gagal ditambahkan’

run: localhost/laravel/public/kelas





SUCCESS / ERROR MESSAGE FEEDBACK

1. Buka file resources/views/kelas.blade.php

@if
- Digunakan untuk menampilkan suatu bagian pada HTML ketika kondisi pada PHP terpenuhi.

@if(session(‘success’))
- Pada contoh diatas, tampilkan div dengan class success jika session(‘success’) tidak kosong. Div tersebut berisikan data/pesan yang ada pada session(‘success’) tersebut.

note : Perhatikan penempatan blok @endif



Setelah berhasil menambahkan data, akan diarahkan ke tampilan ini dengan menampilkan pesan Data Berhasil Ditambahkan

Input Validation

Validasi input menggunakan validation
- Untuk melakukan validasi input agar sesuai dengan yang diharapkan, Laravel sudah menyediakan fiturnya yaitu dengan menggunakan Facades Validator atau function validate.

1. Buka file app/Http/Controllers/KelasController.php, perhatikan code ini pada fungsi store

- Cara menulis rule adalah dengan membuat array asosiatif yang didalamnya berisi key yang berupa nama field yang ada pada form dan value yang berisi string valiadasinya.
- Jika terdapat lebih dari 2 validasi, gunakan simbol |
- Jika string validasi memerlukan parameter, gunakan simbol titik dua :
 Contoh Array Asosiatif untuk Validasi NIS:
 ‘nis’ => ‘max:10’
Artinya: Validasi NIS hanya boleh memiliki panjang maksimal 10 karakter

2. Buka file resources/views/kelas/form.blade.php, tambahkan di paling atas
Disini juga saya menggunakan Bootstrap
- Sama dengan if pada percobaan sebelumnya, if disini artinya menampilkan error dari validasi jika variabel $errors lebih dari 1.
- Variabel $errors berasal dari hasil validasi pada sintaks di Controller => $this->validate()

Hasil :


Akan menampilkan error jika field yang diisi belum sesuai dengan yang ada di rule
DISPLAYING USER’S OLD VALUE







Ketika form tidak lengkap atau tidak sesuai dengan rules, seharusnya form yang sudah diisi oleh user yang sebelumnya harus tetap muncul



1. Buka file resources/views/kelas/form.blade.php, tambahkan code berikut


STUDI KASUS 2

- Bug yang saya temukan adalah ketika kita menginput nis yang sama data masih berhasil dimasukkan. Padahal seharusnya sebagai primary key, nis tidak boleh sama karna nilainya unik.

- Perbaikan : Tambahkan validasi di SiswaController

Sebelumnya saya sudah memasukkan nis '1718117171', mari kita masukkan kembali saat menginput. Apakah berhasil atau tidak?


Gagal! Jadi user tidak dapat memasukkan nis yang sama pada data siswa.


STUDI KASUS 3

→ Fungsi Old pada Radio Button dan Select Option
note: ini ada pada form siswa (jenkel & goldar)
Tambahkan pada resources/views/siswa/form.blade.php
Hasilnya seperti inii
Nah sekian saja yang dapat saya bagikan kepada teman-teman kali ini, mohon maaf apabila banyak sekali kekurangan. Keep happy and stay healthy guys💕💕 Wassalamualaikum.wr.wb💪💪

INTRODUCING ELOQUENT

Assalamualaikum teman-teman yang sedang melihat blog saya kali ini hihi! Apa kabar semuanya? Semoga selalu dalam keadaan sehat wal'afiat...