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
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.
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
4. Sekarang kita coba delete salah satu row nya


































No comments:
Post a Comment