
Dengan perkembangan bisnis yang semakin cepat, kompleksitas aplikasi juga semakin meningkat. Hal ini menuntut aplikasi untuk lebih efisien dan terstruktur agar dapat mengatasi tantangan bisnis yang ada. Salah satu permasalahan yang dapat muncul seiring perkembangan bisnis tersebut yaitu kesulitan dalam maintenance source code.
Setiap kali Anda membuat form baru untuk proses create dan update, maka Anda perlu menulis ulang kode form yang sama, yang akan membuat aplikasi Anda tidak terstruktur dan sulit dalam pemeliharaan. Selain itu, hal ini juga akan menambah waktu dan usaha yang dibutuhkan untuk membuat dan memperbarui aplikasi. Oleh karena itu, menggunakan form yang sama untuk proses create dan update sangat penting untuk membuat aplikasi yang efisien dan terstruktur.
Penggunaan formulir yang sama untuk proses create dan update merupakan hal yang lazim dilakukan dalam pengembangan aplikasi. Hal ini dapat membantu meminimalkan duplikasi kode dan membuat aplikasi lebih terstruktur. Dalam framework Laravel, hal ini bisa dilakukan dengan menggunakan fitur @include. Dalam tutorial ini, kita akan membahas cara menggunakan formulir yang sama untuk kedua proses create dan update dengan mudah.
Skema Data
Dalam tutorial ini penulis akan memberikan contoh dalam pembuatan dan perubahan data user.
Untuk proses create user, form yang digunakan sebagai berikut:
<form action="{{ route('user.create') }}" method="POST">
@csrf
<div class="form-group">
<label for="name">Name</label>
<input type="text" class="form-control" id="name" name="name" placeholder="Enter name">
</div>
<div class="form-group">
<label for="email">Email address</label>
<input type="email" class="form-control" id="email" name="email" placeholder="Enter email">
</div>
<div class="form-group">
<label for="username">Username</label>
<input type="text" class="form-control" id="username" name="username" placeholder="Enter username">
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
Sedangkan untuk proses update user, form yang digunakan sebagai berikut:
<form action="{{ route('user.create') }}" method="POST">
@csrf
@method("PUT")
<div class="form-group">
<label for="name">Name</label>
<input type="text" class="form-control" id="name" name="name" value="{{ $user->name }}" placeholder="Enter name">
</div>
<div class="form-group">
<label for="email">Email address</label>
<input type="email" class="form-control" id="email" name="email" value="{{ $user->email }}" placeholder="Enter email">
</div>
<div class="form-group">
<label for="username">Username</label>
<input type="text" class="form-control" id="username" name="username" value="{{ $user->username }}" placeholder="Enter username">
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
Dapat kita lihat pada contoh diatas terjadi perulangan field yaitu: name, email, dan username. Kita dapat meringkas form tersebut dengan menambahkan view baru dan memanggil view tersebut menggunakan blade directive @include
@include
Untuk membuat form tersebut lebih efisien antara proses create dan update, kita bisa menggunakan @include pada Laravel. Dengan @include, kita bisa memisahkan bagian form yang sama pada proses create dan update menjadi satu file terpisah, lalu menyertakan file tersebut pada setiap halaman form yang diperlukan.
Berikut adalah contohnya:
File form.blade.php (template form yang akan di-include):
<div class="form-group">
<label for="name">Name</label>
<input type="text" class="form-control" id="name" name="name" value="{{ old('name', $user->name ?? '') }}" placeholder="Enter name">
</div>
<div class="form-group">
<label for="email">Email</label>
<input type="email" class="form-control" id="email" name="email" value="{{ old('email', $user->email ?? '') }}" placeholder="Enter email">
</div>
<div class="form-group">
<label for="username">Username</label>
<input type="text" class="form-control" id="username" name="username" value="{{ old('username', $user->username ?? '') }}" placeholder="Enter username">
</div>
<button type="submit" class="btn btn-primary">Submit</button>
File create.blade.php (halaman form create):
<form action="{{ route('user.create') }}" method="POST">
@csrf
@include('form')
</form>
File update.blade.php (halaman form update):
<form action="{{ route('user.update', $user->id) }}" method="POST">
@csrf
@method("PUT")
@include('form')
</form>
Dengan cara ini, kita hanya perlu memperbarui template form pada satu file saja, yaitu file form.blade.php. Ini akan membuat proses pemeliharaan dan pengembangan aplikasi lebih efisien.
Penutup
Dengan menggunakan @include pada Laravel, kita bisa membuat form yang sama pada proses create dan update menjadi lebih efisien dan mudah dalam pemeliharaan. Ini adalah salah satu cara untuk membuat source code yang lebih baik dan terorganisir, sehingga memudahkan proses pengembangan aplikasi dalam jangka panjang.