Implementasi MVC Singkat dengan Laravel

Mohammad Reza Ali F
5 min readSep 28, 2019

--

Aplikasi Laravel menggunakan pola desain Model-View-Controller tradisional, di mana Anda menggunakan:

  1. Model : Untuk berinteraksi dengan basis data Anda dan mengambil informasi objek Anda
  2. Views : Untuk memuat/menampilkan halaman
  3. Controller : Untuk menangani permintaan pengguna dan mengambil data, dengan memanfaatkan Model

Selain itu, routes digunakan untuk memetakan URL ke tindakan pengontrol yang ditunjuk, seperti yang ditunjukkan di bawah ini

  1. Permintaan dibuat — katakanlah, ketika pengguna memasukkan URL yang terkait dengan aplikasi Anda.
  2. Rute yang terkait dengan URL itu memetakan URL ke tindakan pengontrol.
  3. Tindakan pengontrol memanfaatkan model yang diperlukan untuk mengambil informasi dari database, dan kemudian meneruskan data itu ke tampilan.
  4. Dan view memuat halaman/lamannya.

Membuat sample aplikasi

Untuk demonstrasi, saya akan memandu anda melalui proses membangun awal contoh aplikasi Laravel 5 dengan semua komponen MVC — model, tampilan, dan pengontrol.

Model

Kami akan mulai dengan membuat model, sebuah Mobil.

Laravel hadir dengan antarmuka baris perintah fantastis, built-in, Artisan CLI, yang memberi Anda banyak perintah berguna untuk membantu Anda membangun aplikasi.

Jadi, buka cmd, pindah ke direktori utama aplikasi Anda yang diinginkan, dan jalankan perintah berikut untuk menghasilkan model Mobil baru:

php artisan make:model Car --migration

Semua model disimpan di direktori aplikasi utama, sehingga perintah itu akan menghasilkan file model app / Car.php dengan kode berikut:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Car extends Model
{
//
}

Karena fungsionalitas model bawaan Laravel, hanya dengan membuat kelas model kosong, Laravel akan menganggap bahwa model ini dikaitkan dengan tabel database yang bernama mobil.

Dan, sebenarnya, dengan menyediakan opsi — migrasi saat membuat model, Laravel juga membuat file migrasi basis data untuk membuat tabel basis data mobil. File migrasi terletak di [timestamp] _create_cars_table.php dan berisi kode berikut:

<?php

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

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

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

Yang harus Anda lakukan sekarang adalah menggunakan dokumentasi pembuat Skema Laravel untuk menyelesaikan file migrasi. Jadi, Anda dapat menetapkan beberapa kolom tambahan untuk, katakanlah, menyimpan merek, model, dan tanggal produksi mobil:

<?php

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

class CreateCarsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('cars', function (Blueprint $table) {
$table->increments('id');
$table->string('make');
$table->string('model');
$table->date('produced_on');
$table->timestamps();
}

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

Dan kemudian Anda dapat menjalankan migrasi untuk membuat tabel mobil menggunakan perintah Artisan berikut:

php artisan migrate

Dengan item yang terkait dengan database ditangani, sekarang kita dapat beralih untuk membuat controller.

Controller

Dalam Laravel, jenis objek — seperti Mobil, dalam hal ini — disebut sebagai sumber daya.

Karena sangat umum untuk membangun aplikasi di sekitar sumber daya, Anda dapat menghasilkan pengontrol sumber daya — pengontrol untuk menangani semua permintaan yang terkait dengan sumber daya — menggunakan perintah Artisan sederhana lainnya pada cmd:

php artisan make:controller CarController 

Command tsb menghasilkan file controller pada direktori app/Http/Controllers/gCarController.php dengan kode berikut:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

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

class CarController 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)
{
//
}
}

Perhatikan bahwa secara otomatis menghasilkan controller dengan semua tindakan CRUD pada umumnya.

Sekarang, kita hanya perlu mendefinisikan rute untuk mengaitkan URL dengan semua tindakan pengontrol ini.

Routes

Sekali lagi, karena ini adalah skenario yang umum, Anda dapat menentukan rute sumber daya tunggal, yang membuat rute untuk semua tindakan pengontrol sumber daya tersebut.

Dalam file konfigurasi rute app/Http/routes.php tambahkan berikut ini untuk menentukan rute sumber daya Mobil:

Route::resource('cars', 'CarController');

Controller’s show action

Seperti tabel sebelumnya, halaman Show Car akan dapat diakses di http: //app.url/cars/ {car}. Dalam kasus ini, {car} akan menjadi id dari objek mobil dalam database.

Jadi, misalnya, URL untuk melihat mobil dengan id 1 adalah http://app.url/cars/1.

Untuk mengimplementasikan halaman Show Car, dalam aksi show controller, kita perlu:

  1. Gunakan model Mobil untuk mengambil objek Mobil yang ditunjuk dari database.
  2. Muat tampilan untuk halaman Show Car, dan berikan objek Mobil yang diambil dari database.

Pertama, untuk mengakses model Mobil di controller, kita perlu menambahkan pernyataan penggunaan baru di atas kelas controller:

.
.
.
use App\Car;

class CarController extends Controller
{
.
.
.

Kemudian, kita dapat menyelesaikan show action dengan kode berikut:

.
.
.
public function show($id)
{
$car = Car::find($id);
return view('cars.show', array('car' => $car));
}
.
.
.

View

Semua file tampilan Laravel disimpan dalam folder resources/views. Dan mereka dapat diatur ke dalam subfolder dalam direktori itu.

Pada langkah sebelumnya, kami melewati fungsi tampilan nama tampilan cars.show. Itu memberitahu Laravel untuk mencari file tampilan yang terletak di subfolder bernama mobil (dalam direktori sumber daya utama / tampilan) bernama show.blade.php.

File tampilan Laravel menggunakan mesin templating Blade, dan karenanya dinamai .blade.php.

Jadi, untuk menyelesaikan implementasi halaman Show Car ini, kita dapat membuat file tampilan resource/views/cars/show.blade.php dengan kode berikut:

<!DOCTYPE html>
<html>
<head>
<title>Car {{ $car->id }}</title>
</head>
<body>
<h1>Car {{ $car->id }}</h1>
<ul>
<li>Make: {{ $car->make }}</li>
<li>Model: {{ $car->model }}</li>
<li>Produced on: {{ $car->produced_on }}</li>
</ul>
</body>
</html>

Karena kita meneruskan objek Mobil ke tampilan — kembali pada aksi tampilan controller — dengan kunci mobil array, kita dapat mengaksesnya dalam tampilan melalui variabel dengan nama yang sama, $car.

Objek yang diambil melalui model adalah instance dari kelas model itu.

Dan, seperti yang Anda lihat, nilai-nilai objek Mobil dapat diakses menggunakan nama yang sama dengan nama kolom tabel database mobil terkait.

Sekian dari panduan singkat ini, mudah mudahan bermanfaat dan mohon maaf bila ada salah kata.

Referensi :

https://selftaughtcoders.com/from-idea-to-launch/lesson-17/laravel-5-mvc-application-in-10-minutes/

--

--