Membangun Aplikasi Dasar dengan Laravel

Aplikasi Laravel mengikuti pola desain Model-View-Controller (MVC) tradisional, di mana Anda akan menggunakan:

  • Controller untuk menangani permintaan pengguna dan mengambil data, dengan memanfaatkan Model.
  • Model untuk berinteraksi dengan database dan mengambil objek class.
  • View untuk merender halaman.

Selain itu, ada routes untuk memetakan URL ke metode yang didefinisikan pada Controller; Anda dapat lihat diagram siklus permintaan MVC dibawah ini:

Diagram Siklus Permintaan MVC
Siklus Permintaan MVC dalam Aplikasi Laravel 5.

Membangun Contoh Aplikasi

Untuk demo ini, saya akan memandu Anda melalui proses membangun contoh aplikasi dasar menggunakan Laravel 5.8 dengan semua komponen Model-View-Controller (MVC).

Perlu diketahui bahwa Laravel hadir dengan Artisan CLI (built-in command line interface) yang dapat mempermudah untuk membangun aplikasi. Sebelum memulai create project, katakanlah kita akan membuat aplikasi yang berurusan dengan Persediaan Barang.

1. Buat Proyek Laravel Baru

Langkah pertama, kita akan membuat proyek aplikasi Laravel terlebih dahulu. Buka command prompt atau terminal pada direktori dimana Anda ingin menyimpan proyek ini dan jalankan perintah seperti dibawah ini:

$ laravel new "aplikasi-persediaan"
Output

Crafting application...
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Package operations: 76 installs, 0 updates, 0 removals
  ...

Package manifest generated successfully.
Application ready! Build something amazing.

Setelah menjalankan perintah diatas, Anda akan menemukan folder baru. Nama folder proyek adalah aplikasi-persediaan.

Sebelum melanjutkan ke tahap berikutnya, Anda perlu sedikit mengkonfigurasi file .env. Salah satunya adalah mengisi konfigurasi database agar aplikasi dapat terhubung ke server database. Anda buka file .env yang terletak pada direktori utama proyek yang berisi seperti ini:

APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:cr4fVbGMVwmLE4+LmMx7yIbKtqEcD0E6DewfY9MhDyM=
APP_DEBUG=true
APP_URL=http://localhost

...

Sesuaikan nilai konfigurasi (host, user dan kata sandi server database) dengan server database yang sudah Anda pasang di sistem Anda. Pastikan Anda sudah membuat database baru dengan nama inventory_db. Perlu diketahui bahwa Laravel tidak akan membuatkan database baru, Anda perlu membuat database secara manual:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=inventory_db
DB_USERNAME=homestead
DB_PASSWORD=secret

2. Buat Model

Kita akan mulai menulis beberapa kode. Dimulai dari membuat model baru yang mewakili data Produk. Sebelum Anda menggunakan Artisan CLI, pastikan CLI mengarah ke direktori utama proyek, contoh (di Windows):C:\Users\Breakpoin\Laravel\aplikasi-persediaan.

Untuk membuat model baru, Anda dapat menjalankan perintah seperti dibawah ini:

$ php artisan make:model Produk --migration 

Perintah diatas akan membuat model Product disertai perubahan (menambah tabel produk) pada database Anda melalui parameter --migration. Perlu diketahui bahwa semua model disimpan pada direktori app. Sehingga perintah tersebut akan menghasilkan file, salah satunya app/Product.php dengan kode sebagai berikut:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Product extends Model
{
    ...
}

Fungsi bawaan untuk membuat model di Laravel akan menghasilkan model kosong. Laravel juga menambahkan file migrasi database untuk membuat tabel baru bernama products. File migrasi tersebut terletak di direktori database/migrations dengan file [timestamp]_create_products_table.php dan berisi kode sebagai berikut:

<?php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateProductsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('products', function (Blueprint $table) {
            $table->increments('id');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::drop('products');
    }
}

Yang perlu kita lakukan adalah menentukan field yang diperlukan untuk tabel products. Katakanlah kita akan menyimpan data name, brand, stock dan price. dengan mengubah file migrasi diatas seperti berikut:

 Schema::create('products', function (Blueprint $table) {
    $table->increments('id');
    $table->string('name');
    $table->string('brand');
    $table->decimal('stock', 18,2);
    $table->decimal('price', 18,2);
    $table->timestamps();
});

Setelah mengubah file migrasi dengan kode seperti diatas. Anda dapat menjalankan perintah dibawah ini untuk dibuatkan tabel baru ke database aplikasi.

$ php artisan migrate

Dengan menjalankan perintah diatas, database inventory_db akan memiliki tabel bernama products.

Selanjutnya kita akan maju ke langkah berikutnya, yaitu membuat Controller untuk mengendalikan permintaan (mis: mengambil data) dengan memanfaatkan model.

3. Membuat Controller

Di Laravel, jenis objek (dalam hal ini modelProduct) disebut sebagai resource. Anda dapat membuat Controller untuk menangani permintaan yang terkait dengan resource tersebut. Gunakan perintah dibawah ini untuk membuat Controller produk:

$ php artisan make:controller ProductController --resource

Perintah diatas akan menghasilkan file app/Http/Controllers/ProductController.php dengan kode seperti berikut:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;

class ProductController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return Response
     */
    public function index()
    {
        //
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return Response
     */
    public function create()
    {
        //
    }

    /**
     * Store a newly created resource in storage.
     *
     * @return Response
     */
    public function store()
    {
        //
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return Response
     */
    public function show($id)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  int  $id
     * @return Response
     */
    public function update($id)
    {
        //
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return Response
     */
    public function destroy($id)
    {
        //
    }
}

4. Mendefinisian Rute URL

Sekarang, kita perlu mendefinisikan rute untuk mengaitkan URL dengan Controller. Karena ini adalah skenario umum, kita akan menentukan dengan single resource route. Artinya, Laravel akan mendefinisikan rute umum untuk melakukan CRUD atas model Product.

Yang perlu Anda lakukan adalah mengubah file routes/web.php dan menambahkan rute untuk mengelola produk:

<?php

use Illuminate\Support\Str;
...

Route::resource('products', 'ProductController');

Setelah Anda menyimpan file routes/web.php, Laravel akan menghasilkan definisi rute yang terkait dengan ProductController; untuk memastikan route tidak bermasalah, Anda dapat menjalankan perintah dibawah ini:

Baca Juga:  Membangun REST API Dengan Otentikasi Laravel Passport

$ php artisan route:list

Perintah tersebut akan menghasilkan daftar definisi rute yang tersedia. Dalam hal ini, contoh output akan ditampilkan seperti ini:

Jika perintah route:list menampilkan output seperti diatas, berarti Anda berhasil sampai tahap ini. Langkah selanjutnya kita sedikit kembali ke Controller untuk menyelesaikan fungsinya.

5. Memberikan Fungsi pada Controller

Sesuai tabel diatas, halaman rincian produk data diakses melalui http://localhost/products/{product}. Dalam hal ini {product} adalah nilai id dalam database.

Untuk mengimplementasikan halaman produk, kita perlu:

  1. Menggunakan Model Product untuk mengambil objek dari (data di tabel products) database dengan menggunakan use App\Product;.
  2. Membuat View kemudian diberikan objek Product; untuk menampilkan informasi produk pada halaman.

Modifikasi show()

Agar Controller dapat menangani permintaan sesuai rute diatas, sekarang kita akan memberikan fungsi ke metode show() yang ada pada Controller produk.

Yang perlu Anda lakukan sekarang adalah mengubah kode pada file app/Http/Controllers/ProductController.php; isi metode show() seperti berikut:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;

Use App\Product;

class ProductController extends Controller
{
    ...

    /**
     * Menampilkan produk berdasarkan ID.
     *
     * @param  int  $id
     * @return Response
     */
    public function show($id)
    {
        $product = Product::find($id);
        return view('products.show', ['product' => $product]);
    }
}

Jadi pada saat kita mengunjungi http://localhost/products/1, Laravel akan memberikan nilai 1 ke variabel $id dalam fungsi show() Kemudian mengambil objek produk menggunakan model Product melalui panggilan Product::find.

Tampilan akan dimuat menggunakan fungsi view yang telah telah diberikan parameter nama file products.show dan objek produk berupa array['product' => $product].

Menyelesaikan Halaman

Terakhir kita perlu membuat halaman untuk menampilkan informasi produk. File tampilan berupa file berekstensi .blade.php (Lihat: Laravel menggunakan Blade sebagai Template Engine). File tersebut terletak pada direktori resources/views.

Jadi untuk menyelesaikan tampilan halaman produk, Anda perlu direktori baru products pada direktori resources/views; kemudian menambahkan file show.blade.php ke direktori baru tersebut dengan kode sebagai berikut:

<!DOCTYPE html>
<html>
  <head>
    <title>Informasi Produk: {{ $product->name }} ({{ $product->id }})</title>
  </head>
  <body>
    <h1>{{ $product->name }} ({{ $product->id }})</h1>
    <ul>
      <li>Nama: {{ $product->name }}</li>
      <li>Brand: {{ $product->brand }}</li>
      <li>Stock: {{ $product->stock }}</li>
      <li>Harga: {{ $product->price }}</li>
    </ul>
  </body>
</html>

Karena kita memberikan objek Product ke view tersebut dengan kunci array product, kita dapat memanggil objek tersebut dengan menggunakan variable $product pada view. Objek yang diambil melalui model adalah instance dari class model Product.

Seperti yang Anda lihat diatas, nilai objek Product dapat diakses sesuai dengan nama field yang sama pada database (tabel products).

Baca Juga:  Perlukah Unit Testing Dalam Pengembangan Aplikasi?

Kode diatas juga terdapat penggunaan syntax Blade untuk menampilkan informasi produk. Contoh syntax blade berikut untuk menampilkan harga produk:

{{ $product->price }}

Pernyataan diatas sama dengan pernyataan PHP (murni) dengan syntax PHP:

<?php echo $car->make; ?>

Tetapi jika menggunakan syntax Blade, membuat penulisan jauh lebih cepat dan membacanya lebih mudah.

Kesimpulan

Jadi, itulah panduan singkat untuk membangun aplikasi dasar MVC menggunakan Laravel 5. Dengan fitur Artisan CLI dan fungsionalitas bawaan yang disediakan, membangun aplikasi web menggunakan Laravel menjadi cepat dan menyenangkan.