1

Thursday, April 22, 2021

CREATE, READ, UPDATE DAN DELETE

Form Builder

1. Pertama kita akan membuat halaman baru untuk melakukan input data baru Post. Buat file baru resources/views/posts/create.blade.php, code nya seperti dibawah ini. Untuk sementara styling kita skip dulu.

2. Pada line 6, kita melihat ada code route('posts.store'). Code tersebut akan mapping ke routes /posts, silahkan lihat mapping routes dibawah ini. Pada column name “posts.store” di map ke column URI “posts”. Inilah salah satu kegunaan men-setting name ketika mendefinisikan routing.

3. Pada file app/Http/Controllers/PostsController.php, kita hubungkan function create() dengan file resources/views/posts/create.blade.php

4. Buka halaman http://localhost:8000/posts/create

5. Ketika di submit akan muncul seperti ini. Ini terjadi karena laravel mengimplementasikan CSRF protection secara default. Kunjungi halaman ini untuk lebih detail nya https://laravel.com/docs/8.x/csrf.

6. Kalau kita inspect element di browser nya, makan akan code html seperti ini

7. Untuk melakukan testing bahwa kita sudah menghandle CSRF protection dengan benar, maka pada function store(), kita tambahkan

9. Sekarang http://localhost:8000/posts/create kita submit ulang, maka hasilnya akan sperti ini


Save Submitted Data From Form

1. Pada file app/Http/Controllers/PostsController.php function store(), tambahkan code untuk menyimpan data ke database. 

2. Submit form di halaman http://localhost:8000/posts/create

Form Validation

1. Untuk lebih jelas mengenai laravel validation bisa kunjungi halaman ini
 https://laravel.com/docs/8.x/validation#available-validation-rules.

2. Pada function store() tambahkan code dibawah ini.


3. Pada form nya kita perlu memberitahu user alasan error nya

4. Ketika submit form yang tidak valid akan menjadi seperti ini

Custom Form Request Class

1. Terkadang dalam mendevelop aplikasi kita membutuhkan form validation yang lebih komplek. Untuk menghandle validation yang komplek dan implementasi DRY Principle (https://en.wikipedia.org/wiki/Don%27t_repeat_yourself), kita bisa membuat custom request class. Jalan command dibawah ini. php artisan make:request StorePost
2. Command tersebut akan membuat file app/Http/Requests/StorePost.php.
3. Sekarang kita akan memindahkan logic validation yang ada pada function store() ke file app/Http/Requests/StorePost.php.



 4. Jangan lupa untuk menambahkan line code use App\Http\Requests\StorePost; pada file controller nya.

Flash Message

1. Flash message adalah one time message yang berguna untuk memberikan info ketika pindah dari satu page ke page lain. Misalkan kita akan memberi tahu kalau blog post telah berhasil disimpan.

2. Untuk lebih detail mengenai flash message bisa kunjungi halaman ini https://laravel.com/docs/8.x/session#flash-data.

3. Pada function store(), tambahkan code dibawah ini.

4. Kita coba submit form


Get Current Input When Validation Failed

1. Sekarang kalau kita submit form yang tidak valid, maka value dari input yang sudah kita type akan hilang. Alangkah lebih baiknya jika kita masih bisa memunculkan value tersebut. Ini akan sangat berguna ketika input form nya banyak.

2. Untuk menghandle masalah tersebut kita akan menggunakan old() helper yang sudah disediakan oleh laravel. 


3. Sekarang kita coba submit form yang tidak valid, maka hasilnya seperti ini

Model Mass Assignment

1. Model mass assignment berguna untuk men-set value dari field yang akan kita simpan tanpa harus type code satu per satu setting field secara explicit. Untuk lebih detail bisa kunjungi halaman ini https://laravel.com/docs/8.x/eloquent#mass-assignment.

2. Pada file model app/Models/BlogPost.php, tambahkan code ini

3. Pada file app/Http/Controllers/PostsController.php function store(), ubah menjadi seperti ini.

 4. Silahkan dicoba untuk submit form yang valid.

Edit Form

1. Form untuk edit dan create blog post bisa menggunakan form yang sama. Ini adalah implementasi DRY principle.

2. Buat file baru resources/views/posts/partials/form.blade.php, code nya seperti dibawah ini.

3. Ubah file resources/views/posts/create.blade.php menjadi seperti ini

4. Buat file baru resources/views/posts/edit.blade.php, code nya seperti dibawah ini

5. Pada file app/Http/Controllers/PostsController.php function edit(), ubah menjadi seperti ini.

6. Sekarang kita coba buka form edit misalkan untuk blog post id = 1, http://localhost:8000/posts/1/edit. Kasus disya tampilannya seperti ini, jadi value dari form nya usah diisi oleh data yang kita ambil dari database.

7. Silahkan coba coba pakai id yang lain


Update Action

1. Pada file app/Http/Controllers/PostsController.php function update(), ubah menjadi seperti ini

2. Sekarang kita coba update blog post dengan id = 1, http://localhost:8000/posts/1/edit. Maka ketika di submit hasilnya seperti ini

Delete Action

1. Untuk implementasikan delete action, kita akan mengubah file resources/views/posts/index.blade.php menjadi seperti ini.

2. Pada file app/Http/Controllers/PostsController.php function destroy(), ubah menjadi seperti ini

 3. Sekarang kita buka halaman http://localhost:8000/posts

4. Sekarang kita coba delete salah satu row nya


No comments:

Post a Comment