Tutorial Membuat Template Controller Dengan Fitur Stubs Laravel 7

Tutorial Membuat Template Controller Dengan Fitur Stubs Laravel 7

Assalamualaikum teman-teman, ada fitur terbaru nih di Laravel 7 yaitu Customizable Stubs. Apa itu? Jadi semacam template kode, yang mana kemungkinan sedikit ada perubahan kode pada file tersebut dan kode tersebut akan sering digunakan untuk kasus yang sama. Ambil contoh file kelas Controller pada admin, biasanyakan hampir setiap menu memiliki fitur CRUD, nah daripada kita buat dari awal, atau biasanya copas dari file yang udah jadi, dengan fitur ini kita tidak perlu melakukan itu semua. Karena hampir semua struktur kodenya sama, dan hanya sedikit yang memerlukan perubahan, misal nama model ataupun nama variable.


Baik agar tidak bingung langsung kita praktekkan, buka projek kalian, pastikan sudah Laravel 7, jika belum langsung upgrade saja, lihat tutorial nya disini.

Pertama ketikkan perintah php artisan stub:publish 

Jika sudah, kalian nanti akan mendapatkan folder stubs dengan isi file seperti gambar berikut:

Tutorial Membuat Template Controller Dengan Fitur Stubs Laravel 7

Nah, jadi sebenarnya tidak hanya pada Controller aja kita bisa meng-custom template kode, tapi juga di model, migration, dan semua yang ada di folder stubs tersebut. Namun kali ini kita akan belajar membuat template Controller.

Selanjutnya buka file controller.plain.stub pada folder stubs. Nah di file inilah kita buat template kodingannya. Pastikan struktur kode yang akan kita buat nanti benar-benar sudah fix untuk digunakan ke semua Controller. Dan juga pastikan template ini nanti akan banyak digunakan di banyak menu pada projek kita.

Berikut struktur atau template kodingan CRUD yang bisa dijadikan contoh, bisa kalian modifikasi sesuai kebutuhan.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<?php

namespace {{ namespace }};

use {{ rootNamespace }}Http\Controllers\Controller;
use Illuminate\Http\Request;
//use App\NamaModel;

//Panduan Custom Controller
//Load model yang akan kalian gunakan pada controller ini dengan mengganti 'NamaModel' di atas dengan nama model kalian
//Ubah semua 'NamaModel' sesuai dengan nama model yang kalian gunakan pada controller ini
//Ubah semua 'namamode' sesuai dengan nama model yang kalian gunakan pada controller ini (huruf kecil semua)
//Sesuaikan validate rule sesuai kebutuhan

class {{ class }} extends Controller
{
    private $route = 'path_pertama.path_kedua.'; //misal di folder view/book/data jadi tulis aja book.data. kalau di folder view/book berarti tulis aja book.

    public function index()
    {
        $data = NamaModel::all(); 

        return view($this->route . 'index', compact('data')); 
    }

    public function create()
    {
        return view($this->route . 'create'); 
    }

    public function store(Request $request)
    {
        $request->validate([
            'nama' => 'rule', 
            '....' => '....',
            '....' => '....',
        ]); 

        NamaModel::create($request->all()); 

        return redirect()->route($this->route . 'index')
            ->with('success', 'Berhasil'); 
    }

    public function show(NamaModel $namamodel)
    {
        return view($this->route . 'detail', compact('namamodel')); 
    }

    public function edit(NamaModel $namamodel)
    {
        return view($this->route . 'edit', compact('namamodel')); 
    }

    public function update(Request $request, NamaModel $namamodel)
    {
        $request->validate([
            'nama' => 'rule', 
            '....' => '....',
            '....' => '....', 
        ]); 

        $namamodel->update($request->all()); 

        return redirect()->route($this->route . 'index')
            ->with('success', 'Berhasil'); 
    }

    public function destroy(NamaModel $namamodel)
    {
        $namamodel->delete(); 

        return redirect()->route($this->route . 'index')
            ->with('success', 'Berhasil'); 
    }
}

Yang perlu diperhatikan, berikan panduan bagaimana cara mengcustom template controller yang sudah kalian buat, agar orang lain dalam satu kita tidak bingung. Buat nama variable yang mudah dipahami.

Misal kode yang pasti kita ubah adalah nama model, jadi saya buat nama kodenya NamaModel dan saya berikan panduan untuk mengubah NamaModel dengan nama model yang digunakan pada controller tersebut.

Lalu untuk membuat controller sesuai template yang telah kita buat, seperti membuat controller biasa.
php artisan make:controller NamaController

Dan violaaa kita tidak perlu membuat dari awal atau mengcopas dari file controller lainnya.

Mudahkan? Sekian tutorial dan belajar kita kali ini. Mohon maaf jika ada salah kata dalam penjelasan atau jika kurang jelas, silahkan berikan komentar jika ada yang ingin ditanyakan, atau kirim pesan ke kita langsung jika malu, hehehe.

Sekian Wassalamualaikum, wr. wb.

Posting Komentar

1 Komentar