Selamat datang, para calon developer! Apakah kamu tertarik untuk membuat web application yang modern dan scalable? Kalau iya, kamu berada di tempat yang tepat! Artikel ini akan menjadi panduan lengkap Tutorial Laravel 9 untuk Pemula, membantumu langkah demi langkah membangun web app impianmu, bahkan jika kamu belum punya pengalaman sama sekali dengan framework ini.
Laravel 9 adalah versi terbaru dari framework PHP Laravel yang sangat populer. Dikenal karena sintaksnya yang elegan, fiturnya yang lengkap, dan komunitasnya yang besar, Laravel menjadi pilihan ideal untuk membangun berbagai jenis web app, mulai dari blog sederhana hingga aplikasi e-commerce kompleks. Mari kita mulai petualangan seru ini!
1. Mengapa Memilih Laravel 9 untuk Web App Anda? (Keunggulan dan Fitur Utama)
Sebelum kita masuk ke tutorial praktis, mari kita bahas mengapa Laravel 9 menjadi pilihan yang tepat untuk proyek web app kamu. Laravel menawarkan sejumlah keuntungan signifikan dibandingkan framework PHP lainnya, antara lain:
- Sintaks yang Elegan dan Ekspresif: Laravel dikenal dengan sintaksnya yang bersih dan mudah dibaca. Hal ini membuat kode lebih mudah dipahami, dikelola, dan di-debug.
- Fitur yang Lengkap (Out-of-the-Box): Laravel hadir dengan berbagai fitur bawaan seperti routing, templating engine (Blade), database migrations, authentication, dan banyak lagi. Ini memungkinkanmu untuk fokus pada logika bisnis aplikasi, bukan pada detail implementasi teknis.
- Keamanan yang Teruji: Laravel sangat memperhatikan aspek keamanan. Framework ini menyediakan perlindungan terhadap serangan umum seperti Cross-Site Scripting (XSS) dan SQL Injection.
- Database Migration: Laravel’s database migration system allows you to easily modify and share the application’s database schema.
- ORM Eloquent yang Kuat: Eloquent ORM (Object-Relational Mapper) Laravel mempermudah interaksi dengan database. Kamu dapat melakukan operasi CRUD (Create, Read, Update, Delete) dengan sintaks yang intuitif dan powerful.
- Routing yang Fleksibel: Laravel’s routing component gives you the tools you need to define all of the application’s route.
- Komunitas yang Besar dan Aktif: Komunitas Laravel sangat besar dan aktif di seluruh dunia. Ini berarti kamu akan dengan mudah menemukan bantuan, tutorial, dan package tambahan untuk menyelesaikan berbagai masalah atau memperluas fungsionalitas aplikasi kamu.
- Template Engine Blade: Dengan Blade Template Engine anda dapat membuat layout website anda lebih menarik dan dinamis.
Secara khusus, Laravel 9 memperkenalkan beberapa fitur baru yang menarik, seperti:
- PHP 8 Compatibility: Laravel 9 membutuhkan PHP 8 sebagai minimum requirement. Hal ini memastikan kamu dapat memanfaatkan fitur-fitur dan peningkatan performa terbaru dari PHP.
- Enum Support in Eloquent: Laravel 9 menambahkan native support untuk Enum pada Eloquent, mempermudah definisi dan penggunaan predefined values pada model.
- Flysystem 3.0 Upgrade: Laravel 9 menggunakan Flysystem 3.0, yang membawa peningkatan performa dan fitur untuk manajemen file.
- New Design for Routes: Laravel 9 has a new way to define routes in the
routes/web.php
androutes/api.php
files. - HTTP Client Timeouts: Laravel 9 provides an easy way to set timeout options for outgoing HTTP requests.
Dengan semua keunggulan ini, Laravel 9 jelas merupakan pilihan yang sangat baik untuk membangun web app modern dan scalable.
2. Persiapan Awal: Instalasi dan Konfigurasi Laravel 9
Sebelum memulai coding, kita perlu mempersiapkan lingkungan pengembangan dan menginstal Laravel 9. Berikut adalah langkah-langkahnya:
-
Pastikan PHP dan Composer Terinstall: Laravel 9 membutuhkan PHP 8 atau lebih tinggi. Pastikan PHP dan Composer (package manager untuk PHP) sudah terinstall di komputermu. Kamu bisa mendownload dan menginstallnya dari website resmi PHP (https://www.php.net/downloads) dan Composer (https://getcomposer.org/download/).
-
Install Laravel Installer: Buka command line atau terminal dan jalankan perintah berikut untuk menginstall Laravel Installer secara global:
composer global require laravel/installer
-
Buat Proyek Laravel Baru: Setelah Laravel Installer terinstall, kamu bisa membuat proyek Laravel baru dengan perintah:
laravel new nama-proyek
Ganti
nama-proyek
dengan nama yang kamu inginkan untuk proyekmu. Contoh:laravel new blog-saya
-
Masuk ke Direktori Proyek: Setelah proyek selesai dibuat, masuk ke direktori proyek dengan perintah:
cd nama-proyek
-
Konfigurasi .env: Salin file
.env.example
menjadi.env
dan sesuaikan konfigurasi database, email, dan lainnya sesuai kebutuhan. File.env
berisi informasi sensitif yang tidak boleh di-commit ke repository.cp .env.example .env
Buka file
.env
dengan text editor dan ubah pengaturan database (DB_CONNECTION, DB_HOST, DB_PORT, DB_DATABASE, DB_USERNAME, DB_PASSWORD) sesuai dengan konfigurasi database yang kamu gunakan (MySQL, PostgreSQL, dll.). -
Generate Application Key: Jalankan perintah berikut untuk menghasilkan application key:
php artisan key:generate
Application key digunakan untuk mengenkripsi data sensitif seperti session dan cookie.
-
Jalankan Development Server: Untuk menjalankan development server, gunakan perintah:
php artisan serve
Buka browser dan kunjungi
http://localhost:8000
. Jika instalasi berhasil, kamu akan melihat halaman welcome Laravel.
Dengan langkah-langkah ini, kamu sudah berhasil menginstall dan mengkonfigurasi Laravel 9. Sekarang, mari kita mulai membuat web app sederhana!
3. Mengenal Struktur Direktori Laravel 9 (Folder Penting dan Fungsinya)
Sebelum mulai coding, penting untuk memahami struktur direktori Laravel 9. Berikut adalah beberapa folder penting dan fungsinya:
app/
: Berisi kode inti aplikasi, seperti models, controllers, middleware, dan providers.bootstrap/
: Berisi bootstrapping aplikasi. Biasanya tidak perlu dimodifikasi.config/
: Berisi file konfigurasi untuk berbagai aspek aplikasi, seperti database, email, session, dan lainnya.database/
: Berisi migrations, seeders, dan factories untuk mengelola database.public/
: Berisi assets publik seperti CSS, JavaScript, dan gambar. Juga berisi fileindex.php
yang merupakan entry point aplikasi.resources/
: Berisi views (template), assets (uncompiled CSS, JavaScript, dan gambar), dan language files.routes/
: Berisi definisi routes untuk aplikasi.storage/
: Berisi files yang diunggah oleh pengguna dan logs aplikasi.tests/
: Berisi tests untuk aplikasi.vendor/
: Berisi dependencies aplikasi yang diinstall melalui Composer.
Memahami struktur direktori ini akan mempermudah kamu dalam mencari dan memodifikasi file yang dibutuhkan saat mengembangkan aplikasi.
4. Membuat Route, Controller, dan View Sederhana (Contoh Halaman “Hello World”)
Mari kita buat halaman “Hello World” sederhana untuk memahami bagaimana route, controller, dan view bekerja bersama.
-
Definisikan Route: Buka file
routes/web.php
dan tambahkan route berikut:<?php use IlluminateSupportFacadesRoute; /* |-------------------------------------------------------------------------- | Web Routes |-------------------------------------------------------------------------- | | Here is where you can register web routes for your application. These | routes are loaded by the RouteServiceProvider within a group which | contains the "web" middleware group. Now create something great! | */ Route::get('/', function () { return view('welcome'); }); Route::get('/hello', 'AppHttpControllersHelloController@index');
Route
/hello
akan diarahkan ke methodindex
pada controllerHelloController
. -
Buat Controller: Buat file
app/Http/Controllers/HelloController.php
dengan isi berikut:<?php namespace AppHttpControllers; use IlluminateHttpRequest; class HelloController extends Controller { public function index() { return view('hello'); } }
Controller
HelloController
memiliki methodindex
yang mengembalikan viewhello
. -
Buat View: Buat file
resources/views/hello.blade.php
dengan isi berikut:<!DOCTYPE html> <html> <head> <title>Hello World</title> </head> <body> <h1>Hello World!</h1> <p>Selamat datang di aplikasi Laravel saya!</p> </body> </html>
View
hello
adalah file HTML yang akan ditampilkan di browser.
Sekarang, kunjungi http://localhost:8000/hello
di browser. Kamu akan melihat halaman “Hello World” yang menampilkan pesan yang telah kita definisikan.
5. Bekerja dengan Database: Migrations, Models, dan Eloquent ORM (Membuat Tabel dan Data)
Laravel menyediakan fitur yang sangat baik untuk bekerja dengan database. Mari kita pelajari cara menggunakan migrations, models, dan Eloquent ORM.
-
Buat Migration: Gunakan perintah berikut untuk membuat migration untuk tabel
posts
:php artisan make:migration create_posts_table
Buka file migration yang baru dibuat (
database/migrations/yyyy_mm_dd_create_posts_table.php
) dan modifikasi methodup
untuk mendefinisikan struktur tabel:<?php use IlluminateDatabaseMigrationsMigration; use IlluminateDatabaseSchemaBlueprint; use IlluminateSupportFacadesSchema; class CreatePostsTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('posts', function (Blueprint $table) { $table->id(); $table->string('title'); $table->text('content'); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('posts'); } }
Kode di atas akan membuat tabel
posts
dengan kolomid
,title
,content
,created_at
, danupdated_at
. -
Jalankan Migration: Jalankan migration untuk membuat tabel di database:
php artisan migrate
-
Buat Model: Gunakan perintah berikut untuk membuat model
Post
:php artisan make:model Post
Buka file model yang baru dibuat (
app/Models/Post.php
) dan tambahkan properti$fillable
untuk menentukan kolom mana yang boleh diisi saat membuat atau mengupdate data:<?php namespace AppModels; use IlluminateDatabaseEloquentFactoriesHasFactory; use IlluminateDatabaseEloquentModel; class Post extends Model { use HasFactory; protected $fillable = ['title', 'content']; }
-
Gunakan Eloquent untuk Mengelola Data: Sekarang, kamu bisa menggunakan Eloquent ORM untuk melakukan operasi CRUD (Create, Read, Update, Delete) pada tabel
posts
. Contoh:// Membuat data baru $post = new Post(); $post->title = 'Judul Postingan'; $post->content = 'Isi Postingan'; $post->save(); // Atau menggunakan cara yang lebih ringkas $post = Post::create(['title' => 'Judul Postingan', 'content' => 'Isi Postingan']); // Mendapatkan semua data $posts = Post::all(); // Mendapatkan data berdasarkan ID $post = Post::find(1); // Mengupdate data $post->title = 'Judul Postingan Baru'; $post->save(); // Menghapus data $post->delete();
6. Templating dengan Blade: Membuat Layout dan Menampilkan Data (Contoh Daftar Postingan)
Blade adalah templating engine bawaan Laravel yang memungkinkan kamu untuk membuat template yang dinamis dan mudah dikelola.
-
Buat Layout Master: Buat file
resources/views/layouts/app.blade.php
sebagai layout master:<!DOCTYPE html> <html> <head> <title>@yield('title')</title> </head> <body> <div class="container"> @yield('content') </div> </body> </html>
@yield('title')
dan@yield('content')
adalah directives Blade yang akan diisi oleh template lain. -
Buat Template Daftar Postingan: Buat file
resources/views/posts/index.blade.php
untuk menampilkan daftar postingan:@extends('layouts.app') @section('title', 'Daftar Postingan') @section('content') <h1>Daftar Postingan</h1> <ul> @foreach ($posts as $post) <li>{{ $post->title }}</li> @endforeach </ul> @endsection
@extends('layouts.app')
menunjukkan bahwa template ini menggunakan layout masterlayouts/app.blade.php
.@section('title', 'Daftar Postingan')
mengisi sectiontitle
pada layout master.@section('content') ... @endsection
mengisi sectioncontent
pada layout master.@foreach ($posts as $post) ... @endforeach
adalah looping directive Blade yang digunakan untuk menampilkan daftar postingan. -
Tampilkan Data di Controller: Modifikasi controller
HelloController
untuk mengirimkan data posts ke view:<?php namespace AppHttpControllers; use IlluminateHttpRequest; use AppModelsPost; class HelloController extends Controller { public function index() { $posts = Post::all(); return view('posts.index', compact('posts')); } }
compact('posts')
membuat variabel$posts
tersedia di view.
Ubah route /hello
menjadi
Route::get('/hello', 'AppHttpControllersHelloController@index');
Sekarang, kunjungi http://localhost:8000/hello
di browser. Kamu akan melihat daftar postingan yang ditampilkan menggunakan template Blade.
7. Authentication: Membuat Sistem Login dan Register (Menggunakan Laravel UI atau Breeze)
Laravel menyediakan fitur authentication yang lengkap dan mudah digunakan. Kamu bisa menggunakan Laravel UI atau Breeze untuk membuat sistem login dan register dengan cepat.
-
Install Laravel UI atau Breeze:
-
Laravel UI:
composer require laravel/ui php artisan ui vue --auth npm install npm run dev
-
Laravel Breeze:
composer require laravel/breeze --dev php artisan breeze:install npm install npm run dev php artisan migrate
-
-
Konfigurasi Database: Pastikan konfigurasi database di file
.env
sudah benar. -
Jalankan Migration: Jalankan migration untuk membuat tabel yang dibutuhkan oleh sistem authentication:
php artisan migrate
Setelah authentication scaffolding terinstall, kamu akan memiliki halaman login, register, dan reset password yang siap digunakan. Kamu juga akan memiliki middleware auth
yang bisa digunakan untuk melindungi routes dan controllers dari akses yang tidak sah.
8. Middleware: Mengamankan Routes dan Controllers (Contoh Authentication Middleware)
Middleware adalah lapisan antara request dan response yang memungkinkan kamu untuk melakukan berbagai operasi sebelum atau sesudah request diproses. Salah satu penggunaan middleware yang paling umum adalah untuk authentication.
-
Gunakan
auth
Middleware: Untuk melindungi route atau controller agar hanya bisa diakses oleh pengguna yang sudah login, kamu bisa menggunakanauth
middleware. Contoh:Route::get('/profile', function () { // Hanya bisa diakses oleh pengguna yang sudah login })->middleware('auth'); // Atau di controller public function __construct() { $this->middleware('auth'); }
-
Buat Middleware Kustom: Kamu juga bisa membuat middleware kustom untuk melakukan operasi yang lebih kompleks. Gunakan perintah berikut untuk membuat middleware baru:
php artisan make:middleware CheckRole
Buka file middleware yang baru dibuat (
app/Http/Middleware/CheckRole.php
) dan modifikasi methodhandle
untuk melakukan pengecekan peran pengguna:<?php namespace AppHttpMiddleware; use Closure; use IlluminateHttpRequest; class CheckRole { /** * Handle an incoming request. * * @param IlluminateHttpRequest $request * @param Closure(IlluminateHttpRequest): (IlluminateHttpResponse|IlluminateHttpRedirectResponse) $next * @param string $role * @return IlluminateHttpResponse|IlluminateHttpRedirectResponse */ public function handle(Request $request, Closure $next, string $role) { if ($request->user()->role !== $role) { abort(403, 'Unauthorized'); } return $next($request); } }
Kemudian, daftarkan middleware baru di file
app/Http/Kernel.php
:protected $routeMiddleware = [ 'auth' => AppHttpMiddlewareAuthenticate::class, 'cache.headers' => IlluminateHttpMiddlewareSetCacheHeaders::class, 'can' => IlluminateAuthMiddlewareAuthorize::class, 'guest' => AppHttpMiddlewareRedirectIfAuthenticated::class, 'signed' => IlluminateRoutingMiddlewareValidateSignature::class, 'throttle' => IlluminateRoutingMiddlewareThrottleRequests::class, 'verified' => IlluminateAuthMiddlewareEnsureEmailIsVerified::class, 'checkrole' => AppHttpMiddlewareCheckRole::class, // Tambahkan ini ];
Sekarang, kamu bisa menggunakan middleware
checkrole
untuk melindungi route atau controller berdasarkan peran pengguna:Route::get('/admin', function () { // Hanya bisa diakses oleh pengguna dengan peran "admin" })->middleware('auth', 'checkrole:admin');
9. Validasi Data: Memastikan Data yang Masuk Valid (Contoh Validasi Form)
Validasi data sangat penting untuk memastikan bahwa data yang masuk ke aplikasi valid dan sesuai dengan aturan yang telah ditentukan. Laravel menyediakan fitur validasi yang lengkap dan mudah digunakan.
-
Validasi di Controller: Kamu bisa melakukan validasi data di controller menggunakan method
validate
:public function store(Request $request) { $validatedData = $request->validate([ 'title' => 'required|max:255', 'content' => 'required', ]); // Simpan data ke database $post = Post::create($validatedData); return redirect('/posts'); }
Kode di atas akan memvalidasi input
title
dancontent
.title
harus diisi (required
) dan tidak boleh lebih dari 255 karakter (max:255
).content
juga harus diisi (required
).Jika validasi gagal, Laravel akan secara otomatis mengarahkan pengguna kembali ke form dengan pesan error.
-
Buat Form Request: Untuk validasi yang lebih kompleks, kamu bisa membuat form request:
php artisan make:request StorePostRequest
Buka file form request yang baru dibuat (
app/Http/Requests/StorePostRequest.php
) dan modifikasi methodrules
untuk mendefinisikan aturan validasi:<?php namespace AppHttpRequests; use IlluminateFoundationHttpFormRequest; class StorePostRequest extends FormRequest { /** * Determine if the user is authorized to make this request. * * @return bool */ public function authorize() { return true; // Ganti dengan logika otorisasi jika diperlukan } /** * Get the validation rules that apply to the request. * * @return array */ public function rules() { return [ 'title' => 'required|max:255', 'content' => 'required', ]; } }
Kemudian, gunakan form request di controller:
public function store(StorePostRequest $request) { // Simpan data ke database $post = Post::create($request->validated()); return redirect('/posts'); }
10. Testing: Menulis Unit Test dan Feature Test (Memastikan Aplikasi Berfungsi dengan Baik)
Testing adalah bagian penting dari pengembangan software. Laravel menyediakan dukungan yang baik untuk testing, termasuk unit test dan feature test.
-
Unit Test: Unit test digunakan untuk menguji bagian-bagian kecil dari kode, seperti method atau class.
-
Feature Test: Feature test digunakan untuk menguji fitur-fitur aplikasi secara keseluruhan, seperti proses login, register, atau membuat postingan baru.
-
Membuat Test: Gunakan perintah berikut untuk membuat test baru:
php artisan make:test PostTest
Buka file test yang baru dibuat (
tests/Feature/PostTest.php
) dan tulis test untuk menguji fungsionalitas aplikasi. Contoh:<?php namespace TestsFeature; use IlluminateFoundationTestingRefreshDatabase; use IlluminateFoundationTestingWithFaker; use TestsTestCase; use AppModelsPost; class PostTest extends TestCase { use RefreshDatabase; /** @test */ public function a_post_can_be_created() { $this->withoutExceptionHandling(); $post = Post::factory()->create(); $this->assertDatabaseHas('posts', [ 'title' => $post->title, 'content' => $post->content, ]); } }
Kode di atas akan membuat test untuk memastikan bahwa postingan baru dapat dibuat dan disimpan ke database.
-
Menjalankan Test: Jalankan test menggunakan perintah:
php artisan test
11. Deployment: Menerbitkan Aplikasi Laravel 9 ke Server (Contoh Menggunakan Forge atau Heroku)
Setelah aplikasi selesai dikembangkan dan diuji, langkah selanjutnya adalah menerbitkannya ke server agar bisa diakses oleh pengguna. Ada banyak cara untuk melakukan deployment aplikasi Laravel 9, di antaranya:
- Laravel Forge: Laravel Forge adalah platform deployment yang dirancang khusus untuk aplikasi Laravel. Forge mempermudah proses deployment, konfigurasi server, dan manajemen database.
- Heroku: Heroku adalah platform-as-a-service (PaaS) yang memungkinkan kamu untuk menerbitkan aplikasi Laravel dengan mudah. Heroku menyediakan free tier yang bisa digunakan untuk project kecil.
- DigitalOcean: DigitalOcean adalah cloud infrastructure provider yang menyediakan virtual machine (VM) yang bisa kamu gunakan untuk menjalankan aplikasi Laravel.
- AWS (Amazon Web Services): AWS adalah cloud platform yang komprehensif dengan berbagai layanan yang bisa digunakan untuk menjalankan aplikasi Laravel, seperti EC2, S3, dan RDS.
Proses deployment akan bervariasi tergantung pada platform yang kamu gunakan. Secara umum, langkah-langkah deployment meliputi:
- Konfigurasi Server: Pastikan server kamu sudah terkonfigurasi dengan benar, termasuk PHP, Composer, dan database server.
- Upload Kode Aplikasi: Upload kode aplikasi Laravel ke server.
- Install Dependencies: Jalankan
composer install
untuk menginstall semua dependencies aplikasi. - Konfigurasi .env: Sesuaikan konfigurasi di file
.env
dengan pengaturan server. - Generate Application Key: Jalankan
php artisan key:generate
untuk menghasilkan application key. - Jalankan Migration: Jalankan
php artisan migrate
untuk membuat tabel di database. - Konfigurasi Web Server: Konfigurasi web server (Apache atau Nginx) untuk mengarahkan request ke file
public/index.php
.
12. Sumber Daya Belajar Laravel 9 Lebih Lanjut (Dokumentasi, Tutorial, dan Komunitas)
Selamat! Kamu sudah mempelajari dasar-dasar Tutorial Laravel 9 untuk Pemula dan siap untuk membangun web app impianmu. Untuk memperdalam pengetahuanmu, berikut adalah beberapa sumber daya yang bisa kamu manfaatkan:
- Dokumentasi Resmi Laravel: Dokumentasi resmi Laravel (https://laravel.com/docs/9.x) adalah sumber informasi terlengkap dan terakurat tentang Laravel.
- Laravel News: Laravel News (https://laravel-news.com/) adalah blog yang berisi berita, tutorial, dan tips tentang Laravel.
- Laracasts: Laracasts (https://laracasts.com/) adalah platform online learning yang menyediakan video tutorial berkualitas tinggi tentang Laravel dan teknologi web lainnya.
- Stack Overflow: Stack Overflow (https://stackoverflow.com/questions/tagged/laravel) adalah forum tanya jawab yang sangat populer di kalangan developer. Kamu bisa mencari solusi untuk masalah yang kamu hadapi atau bertanya jika ada yang tidak kamu pahami.
- Laravel Discord: Bergabunglah dengan komunitas Laravel di Discord (https://discord.com/invite/mPZMTK9) untuk berinteraksi dengan developer Laravel lainnya, mendapatkan bantuan, dan berbagi pengetahuan.
Dengan memanfaatkan sumber daya ini, kamu akan terus berkembang menjadi developer Laravel yang handal. Jangan ragu untuk bereksperimen, mencoba hal-hal baru, dan berkontribusi pada komunitas Laravel. Selamat berkarya!