Laravel: Lebih Terstruktur dan Scalable - View Model: Presentasi Data yang Lebih Rapi dan Terorganisir

Halo teman-teman developer! Rama di sini. Hari ini saya ingin berbagi tentang sebuah konsep menarik dalam pengembangan aplikasi Laravel, yaitu view model.

Sebagai seorang Full Stack Developer yang sering menggunakan Laravel dan Remix (React), saya sangat menghargai teknik-teknik yang dapat membuat kode kita lebih bersih, terstruktur, dan mudah dipelihara. View model adalah salah satu alat yang sangat membantu dalam hal ini.

Blog banner: Lebih Terstruktur dan Scalable - View Model: Presentasi Data yang Lebih Rapi dan Terorganisir

Apa itu View Model?

View model adalah class PHP yang bertugas menyiapkan dan memformat data yang akan ditampilkan pada view. Bayangkan view model sebagai jembatan antara controller dan view. Controller akan mengambil data dari model atau sumber lain, kemudian view model akan "mempercantik" data tersebut agar siap ditampilkan di view.

Mengapa Kita Perlu View Model?

  1. Pemisahan Logic (SoC): View model membantu kita memisahkan logika presentasi (cara data ditampilkan) dari logika aplikasi (cara data diambil dan diolah). Ini membuat kode kita lebih mudah dipahami, diuji, dan dipelihara.

  2. Kode yang Lebih Bersih: Controller kita akan menjadi lebih ramping karena tidak perlu lagi pusing dengan detail tentang bagaimana data diformat untuk ditampilkan.

  3. Penggunaan Kembali Kode: View model dapat digunakan kembali di berbagai view, mengurangi duplikasi kode.

  4. Fleksibilitas: View model dapat melakukan transformasi data yang kompleks, seperti menggabungkan data dari beberapa model, menghitung nilai baru, atau memformat data sesuai kebutuhan tampilan.

Membuat View Model di Laravel

Berikut adalah contoh sederhana view model untuk menampilkan detail buku:

namespace App\ViewModels;

use App\Models\Book;
use Illuminate\Contracts\Support\Arrayable;

class BookViewModel implements Arrayable
{
    public function __construct(public Book $book)
    {
    }

    public function toArray()
    {
        return [
            'judul' => $this->book->judul,
            'pengarang' => $this->book->pengarang,
            'tahunTerbit' => $this->book->tahun_terbit,
            'statusPeminjaman' => $this->book->status_peminjaman, // Contoh transformasi data
        ];
    }
}

Menggunakan View Model di Controller

namespace App\Http\Controllers;

use App\Models\Book;
use App\ViewModels\BookViewModel;

class BookController extends Controller
{
    public function show(Book $book)
    {
        return view('books.show', new BookViewModel($book));
    }
}

Menggunakan View Model di View

<h1>{{ $judul }}</h1>
<p>Oleh: {{ $pengarang }}</p>
<p>Tahun Terbit: {{ $tahunTerbit }}</p>
<p>Status: {{ $statusPeminjaman }}</p>

Kesimpulan

Sebagai seorang developer yang selalu ingin belajar dan berbagi, saya sangat merekomendasikan penggunaan view model dalam pengembangan aplikasi Laravel. Ini adalah teknik yang sangat berguna untuk meningkatkan struktur dan skalabilitas aplikasi kita.

Jika teman-teman tertarik untuk mempelajari lebih lanjut tentang view model atau topik Laravel lainnya, jangan ragu untuk menjelajahi channel YouTube saya di QisthiDev atau mengikuti saya di media sosial. Mari kita belajar dan bertumbuh bersama sebagai komunitas developer!

Sampai jumpa di artikel selanjutnya!