1

Saturday, April 10, 2021

Controller, ENV dan DB Config

Controller

Best practice dari laravel framework adalah menggunakan controller untuk menghandle request. Jadi kita perlu memindahkan logic pada routes/web.php ke controller.

Make Controller 

Tahap pertama kita akan memindahkan routing / dan /contact. Mari kita ikuti langkah-langkah dibawah ini:
1. Jalan code ini di terminal untuk membuat Home controller 
    php artisan make:controller HomeController 
2. Code diatas akan membuat file app/Http/Controllers/HomeController.php

3. Pada file routes/web.php ketik code dibawah ini

4. Tambahkan juga code dibawah ini.
 
Hint
Ada code yang perlu di comment 

5. Jalankan routing list, apabila settingan routing kita benar, makan action untuk route / dan /contact. Akan diarahkan ke controller 
php artisan route:list

6. Ketikan code di bawah ini pada file app/Http/Controllers/HomeController.php

Single Action Controller

Terkadang kita hanya membutuhkan single action controller, misalkan untuk halaman /about. Untuk membuat single action controller, mari kita ikuti langkah-langkah dibawah ini:
1. Jalan code ini di terminal untuk membuat About controller
    php artisan make:controller AboutController
2. Code diatas akan membuat file app/Http/Controllers/AboutController.php. Buka file tersebut dan edit menjadi seperti ini

3. Buat file view resources/views/about/index.blade.php

 4. Tambahkan code dibawah ini pada file routes/web.php

    Hint: 
    Selain code tersebut, anda perlu menambahkan code lainya.

Rest Controller 

1. Rest controller adalah salah best practice untuk membuat Create, Read, Update, Delete (CRUD) action.
2. Mari lihat diagram dibawah ini 

3. Diagram diatas adalah best practice untuk membuat CRUD action anda yang perlu anda perhatikan:
    a. Resource/Noun → Posts
    b. Controller name → PostsController
    c. Gunakan http verb yang sesuai dengan action nya, misalkan GET untuk read data, POST untuk create, PUT/PATCH untuk update dan DELETE untuk delete.
    d. Untuk rest akan memiliki 7 action, silahkan lihat kotak yang berwarna putih

4. Laravel sudah menyediakan artisan command untuk mempermudah kita membuat Rest Controller. Jalankan code dibawah ini:
php artisan make:controller PostsController --resource

5. Command tersebut akan membuat file app/Http/Controllers/PostsController.php, kemudian buka file tersebut. Secara otomatis file controller tersebut terdiri dari 7 action (function) 
    a. public function index() → untuk halaman list post
    b. public function create() → untuk halaman form create post
    c. public function store(Request $request) → untuk action form create post
    d. public function show($id) → untuk halaman single post
    e. public function edit($id) → untuk halaman form edit post
    f. public function update(Request $request, $id) → untuk action form edit post
    g. public function destroy($id) → untuk delete post

6. Pada file routes/web.php, ketikan code di bawah ini

 Hint: 
 Ada code yang perlu ditambahkan dan ada code yang perlu di comment

7. Jalan command 
php artisan route:list

Kita lihat 1 line code akan membuatkan 7 routing

8. Routing resource juga memiliki beberapa option function only dan except
    Route::resource('posts', PostsController::class)->only(['index', 'show']);
    
    Route::resource('posts', PostsController::class)->except(['index', 'show']);

    Hint:
    Silahkan coba code tersebut, temukan perbedaanya atau pengaruhnya.

9. Selesai

Move logic /posts and /posts/{id} from route to controller

Kita akan memindahkan logic pada path /posts and /posts/{id} ke controller. Code kita sebelumnya sudah bisa menampilkan halaman /posts and /posts/{id}. Mari kita ikuti langkah-langkah dibawah ini: 
1. Buka file app/Http/Controllers/PostsController.php tambahkan private variable.

2. Pada function index() tambahkan code dibawah ini. Line 30

3. Buka http://localhost:8000/posts pada browser

4. Silahkan anda pindahkan logic pada path /posts/{id} dari routes ke controller, sample tampilan pada browser nya seperti ini

5. Silahkan tambahkan juga logic untuk 5 path lainya 

No comments:

Post a Comment