Laravel telah menjadi framework PHP yang paling populer di kalangan developer web saat ini. Dengan sintaks yang elegan, fitur yang kaya, dan komunitas yang besar, Laravel mempermudah pengembangan aplikasi web yang kompleks. Jika kamu seorang pemula dan ingin mempelajari Laravel, kamu berada di tempat yang tepat! Artikel ini akan memberikan tutorial Laravel lengkap untuk pemula, membimbingmu langkah demi langkah dalam belajar framework PHP terpopuler ini.
Daftar Isi
- Apa itu Laravel dan Mengapa Harus Mempelajarinya?
- Persiapan Awal: Instalasi dan Konfigurasi Lingkungan Pengembangan
- Dasar-Dasar Laravel: Routing, Controllers, dan Views
- Eloquent ORM: Interaksi Database yang Lebih Mudah
- Template Engine Blade: Membuat Tampilan yang Dinamis
- Form Handling dan Validasi: Menangani Input Pengguna
- Middleware: Kontrol Akses dan Modifikasi Request/Response
- Authentication: Mengamankan Aplikasi dengan Autentikasi Pengguna
- Artisan Console: Mempermudah Pekerjaan dengan Command-Line
- Testing Laravel: Memastikan Kualitas Kode
- Deploying Aplikasi Laravel: Mempersiapkan Aplikasi untuk Produksi
- Sumber Belajar Lanjutan dan Komunitas Laravel
1. Apa itu Laravel dan Mengapa Harus Mempelajarinya?
Laravel adalah sebuah framework PHP open-source yang didesain untuk mengembangkan aplikasi web dengan lebih cepat dan efisien. Dibangun dengan pola desain MVC (Model-View-Controller), Laravel menyediakan struktur yang terorganisir dan mudah dipahami, memisahkan logika bisnis, tampilan, dan interaksi database.
Mengapa harus mempelajari Laravel? Ada banyak alasan, di antaranya:
- Sintaks yang Elegan dan Mudah Dibaca: Laravel dikenal dengan sintaksnya yang jelas dan mudah dibaca, membuat kode lebih mudah dipahami dan dipelihara.
- Fitur yang Kaya: Laravel menyediakan banyak fitur bawaan yang mempermudah pengembangan aplikasi, seperti routing, database migration, authentication, authorization, queues, cache, dan masih banyak lagi.
- Eloquent ORM: Laravel menggunakan Eloquent ORM (Object-Relational Mapper) yang mempermudah interaksi dengan database. Kamu tidak perlu menulis query SQL yang rumit, cukup menggunakan method yang disediakan oleh Eloquent.
- Template Engine Blade: Blade adalah template engine yang powerfull dan mudah digunakan, memungkinkan kamu membuat tampilan yang dinamis dengan sintaks yang sederhana.
- Keamanan: Laravel memiliki fitur keamanan yang kuat, seperti perlindungan terhadap Cross-Site Scripting (XSS) dan SQL Injection, membantu kamu membangun aplikasi yang lebih aman.
- Komunitas yang Besar dan Aktif: Laravel memiliki komunitas yang besar dan aktif, menyediakan dukungan, sumber belajar, dan paket (package) yang melimpah. Kamu akan mudah menemukan solusi jika mengalami masalah atau membutuhkan bantuan.
- Artisan Console: Artisan adalah command-line interface (CLI) yang disediakan oleh Laravel, memungkinkan kamu menjalankan berbagai perintah untuk mempermudah pengembangan aplikasi, seperti membuat controller, model, migration, dan lain-lain.
- Job Queue dan Background Processing: Laravel memiliki dukungan bawaan untuk antrian tugas (job queues), memungkinkan kamu menjalankan tugas-tugas yang memakan waktu di latar belakang, seperti mengirim email atau memproses gambar. Ini meningkatkan responsivitas aplikasimu.
- Composer Dependency Manager: Laravel menggunakan Composer, dependency manager standar PHP, untuk mengelola library dan package. Ini mempermudah instalasi dan pembaruan dependency aplikasi.
- Peluang Karir: Menguasai Laravel akan meningkatkan peluang karirmu sebagai developer web. Banyak perusahaan yang mencari developer dengan pengalaman Laravel.
Dengan semua keunggulan ini, tidak heran jika Laravel menjadi framework PHP yang paling populer dan banyak digunakan di berbagai industri. Tutorial Laravel lengkap untuk pemula ini akan membantumu memulai perjalananmu dalam dunia Laravel.
2. Persiapan Awal: Instalasi dan Konfigurasi Lingkungan Pengembangan
Sebelum memulai belajar framework PHP terpopuler ini, kamu perlu menyiapkan lingkungan pengembangan terlebih dahulu. Berikut adalah langkah-langkahnya:
-
Instalasi PHP: Pastikan kamu sudah menginstal PHP versi 7.3 atau lebih tinggi. Kamu bisa mengunduh PHP dari situs resminya: https://www.php.net/downloads.
- Windows: Gunakan XAMPP atau WAMP untuk instalasi yang lebih mudah.
- macOS: Gunakan MAMP atau Homebrew.
- Linux: Gunakan package manager sistem operasi (misalnya,
aptuntuk Debian/Ubuntu,yumuntuk CentOS/RHEL).
Pastikan juga ekstensi PHP berikut terinstal:
- BCMath PHP Extension
- Ctype PHP Extension
- JSON PHP Extension
- Mbstring PHP Extension
- OpenSSL PHP Extension
- PDO PHP Extension
- Tokenizer PHP Extension
- XML PHP Extension
-
Instalasi Composer: Composer adalah dependency manager untuk PHP. Kamu bisa mengunduh dan menginstalnya dari situs resminya: https://getcomposer.org/download/.
-
Instalasi Node.js dan npm (Opsional): Node.js dan npm (Node Package Manager) dibutuhkan jika kamu ingin menggunakan Laravel Mix untuk mengelola asset (CSS, JavaScript). Kamu bisa mengunduh dan menginstalnya dari situs resminya: https://nodejs.org/en/download/.
-
Instalasi Laravel Installer (Opsional): Laravel Installer mempermudah pembuatan proyek Laravel baru. Kamu bisa menginstalnya dengan perintah Composer:
composer global require laravel/installer -
Membuat Proyek Laravel Baru:
-
Menggunakan Laravel Installer:
laravel new nama-proyek -
Menggunakan Composer:
composer create-project --prefer-dist laravel/laravel nama-proyek
Ganti
nama-proyekdengan nama proyek yang kamu inginkan. -
-
Konfigurasi Database: Buka file
.envdi direktori proyek Laravelmu. Cari bagian yang berkaitan dengan database dan sesuaikan dengan konfigurasi databasemu:DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=nama_database DB_USERNAME=nama_pengguna DB_PASSWORD=passwordGanti
nama_database,nama_pengguna, danpassworddengan informasi yang sesuai. -
Menjalankan Server Pengembangan: Masuk ke direktori proyek Laravelmu melalui terminal dan jalankan perintah berikut:
php artisan serveIni akan menjalankan server pengembangan Laravel. Kamu bisa mengakses aplikasi Laravelmu melalui browser di alamat
http://127.0.0.1:8000.
Dengan langkah-langkah di atas, kamu sudah berhasil menyiapkan lingkungan pengembangan dan membuat proyek Laravel baru. Sekarang kamu siap untuk melanjutkan ke langkah selanjutnya dan belajar framework PHP terpopuler ini!
3. Dasar-Dasar Laravel: Routing, Controllers, dan Views
Memahami routing, controller, dan view adalah kunci dalam belajar framework PHP terpopuler, Laravel. Ketiga komponen ini adalah fondasi dari pola desain MVC yang digunakan oleh Laravel.
-
Routing: Routing bertugas untuk memetakan URL (Uniform Resource Locator) ke controller yang sesuai. Dengan kata lain, routing menentukan apa yang akan dijalankan ketika pengguna mengakses URL tertentu. File routing utama di Laravel terletak di
routes/web.php.Contoh routing:
Route::get('/', function () { return view('welcome'); }); Route::get('/about', 'AboutController@index'); Route::resource('posts', 'PostController');Route::get('/', ...): Menentukan route untuk URL/(halaman utama).Route::get('/about', 'AboutController@index'): Menentukan route untuk URL/aboutdan mengarahkannya ke methodindexdi controllerAboutController.Route::resource('posts', 'PostController'): Membuat serangkaian route standar untuk mengelola sumber dayaposts(misalnya, index, create, store, show, edit, update, destroy).
-
Controllers: Controller bertugas untuk menangani logika aplikasi, menerima request dari pengguna, berinteraksi dengan model (jika diperlukan), dan mengembalikan response berupa view atau data. Controller terletak di direktori
app/Http/Controllers.Contoh controller:
<?php namespace AppHttpControllers; use IlluminateHttpRequest; class AboutController extends Controller { public function index() { return view('about'); } }namespace AppHttpControllers;: Mendefinisikan namespace untuk controller.class AboutController extends Controller: Mendefinisikan class controllerAboutControlleryang mewarisi dari classController.public function index(): Mendefinisikan methodindexyang akan dijalankan ketika URL/aboutdiakses. Method ini mengembalikan viewabout.
-
Views: View bertugas untuk menampilkan data ke pengguna. View berisi HTML, CSS, dan JavaScript yang digunakan untuk membuat tampilan aplikasi. View terletak di direktori
resources/views.Contoh view (
resources/views/about.blade.php):<!DOCTYPE html> <html> <head> <title>About Us</title> </head> <body> <h1>About Us</h1> <p>This is the about page.</p> </body> </html>Ini adalah view sederhana yang menampilkan judul “About Us” dan paragraf “This is the about page.”
Dengan memahami routing, controller, dan view, kamu sudah memiliki dasar yang kuat untuk belajar framework PHP terpopuler Laravel. Selanjutnya, kita akan membahas Eloquent ORM, yang mempermudah interaksi dengan database.
4. Eloquent ORM: Interaksi Database yang Lebih Mudah
Eloquent ORM (Object-Relational Mapper) adalah fitur yang sangat penting dalam tutorial Laravel lengkap untuk pemula ini. Eloquent ORM menyederhanakan interaksi dengan database dengan memungkinkan kamu berinteraksi dengan tabel database menggunakan object PHP. Kamu tidak perlu menulis query SQL yang rumit, cukup menggunakan method yang disediakan oleh Eloquent.
-
Models: Model merepresentasikan sebuah tabel database. Setiap instance dari model merepresentasikan sebuah baris di tabel tersebut. Model terletak di direktori
app/Models.Contoh model (
app/Models/Post.php):<?php namespace AppModels; use IlluminateDatabaseEloquentModel; class Post extends Model { // Nama tabel (jika berbeda dengan nama model) protected $table = 'posts'; // Kolom yang boleh diisi (mass assignment) protected $fillable = ['title', 'content']; // Kolom yang tidak boleh diisi (guarded) protected $guarded = ['id']; // Relasi dengan tabel lain public function user() { return $this->belongsTo('AppModelsUser'); } }namespace AppModels;: Mendefinisikan namespace untuk model.class Post extends Model: Mendefinisikan class modelPostyang mewarisi dari classModel.protected $table = 'posts';: Mendefinisikan nama tabel yang terkait dengan model. Jika nama tabel sama dengan nama model (dalam bentuk snake case dan plural), maka tidak perlu didefinisikan.protected $fillable = ['title', 'content'];: Mendefinisikan kolom-kolom yang boleh diisi melalui mass assignment.protected $guarded = ['id'];: Mendefinisikan kolom-kolom yang tidak boleh diisi melalui mass assignment.public function user(): Mendefinisikan relasi dengan tabelusers(one-to-many). ModelPostbelongs to ModelUser.
-
Querying Data: Eloquent menyediakan berbagai method untuk melakukan query data:
// Mengambil semua data $posts = Post::all(); // Mengambil data berdasarkan ID $post = Post::find(1); // Mengambil data dengan kondisi $posts = Post::where('title', 'like', '%Laravel%')->get(); // Mengambil data dengan pagination $posts = Post::paginate(10); -
Inserting Data:
$post = new Post(); $post->title = 'Judul Post Baru'; $post->content = 'Isi Post Baru'; $post->save(); // Atau menggunakan mass assignment Post::create(['title' => 'Judul Post Baru', 'content' => 'Isi Post Baru']); -
Updating Data:
$post = Post::find(1); $post->title = 'Judul Post Diperbarui'; $post->content = 'Isi Post Diperbarui'; $post->save(); // Atau menggunakan mass update Post::where('id', 1)->update(['title' => 'Judul Post Diperbarui', 'content' => 'Isi Post Diperbarui']); -
Deleting Data:
$post = Post::find(1); $post->delete(); // Atau menggunakan delete by ID Post::destroy(1);
Dengan Eloquent ORM, interaksi dengan database menjadi lebih mudah, cepat, dan aman. Kamu tidak perlu khawatir tentang menulis query SQL yang rentan terhadap SQL Injection. Eloquent akan menangani semua itu untukmu.
5. Template Engine Blade: Membuat Tampilan yang Dinamis
Blade adalah template engine yang powerfull dan mudah digunakan, memungkinkan kamu membuat tampilan yang dinamis dengan sintaks yang sederhana. Bagian penting dari tutorial Laravel lengkap untuk pemula ini adalah memahami cara menggunakan Blade.
-
Sintaks Blade: Blade menggunakan sintaks yang diawali dengan
{{dan}}untuk menampilkan data, serta@untuk directive (perintah).-
Menampilkan Data:
<h1>{{ $title }}</h1> <p>{{ $content }}</p> -
Percabangan (if):
@if ($isLoggedIn) <p>Welcome, {{ $username }}!</p> @else <p>Please login.</p> @endif -
Perulangan (foreach):
<ul> @foreach ($posts as $post) <li>{{ $post->title }}</li> @endforeach </ul> -
Comments:
{{-- This is a comment --}}
-
-
Template Inheritance: Blade memungkinkan kamu membuat layout utama dan mewariskannya ke view lain. Ini mempermudah pembuatan tampilan yang konsisten.
-
Layout Utama (
resources/views/layouts/app.blade.php):<!DOCTYPE html> <html> <head> <title>@yield('title')</title> </head> <body> @include('partials.navbar') <div class="container"> @yield('content') </div> @include('partials.footer') </body> </html>@yield('title'): Menentukan bagian yang akan diisi oleh view lain.@include('partials.navbar'): Menyertakan partial viewnavbar.@yield('content'): Menentukan bagian yang akan diisi oleh view lain (isi konten).@include('partials.footer'): Menyertakan partial viewfooter.
-
View yang Mewarisi Layout (
resources/views/posts/index.blade.php):@extends('layouts.app') @section('title', 'Daftar Post') @section('content') <h1>Daftar Post</h1> <ul> @foreach ($posts as $post) <li>{{ $post->title }}</li> @endforeach </ul> @endsection@extends('layouts.app'): Menentukan bahwa view ini mewarisi layoutlayouts.app.@section('title', 'Daftar Post'): Mengisi bagiantitledengan “Daftar Post”.@section('content'): Mengisi bagiancontentdengan daftar post.
-
-
Components: Blade juga mendukung components, yang memungkinkan kamu membuat reusable UI elements.
-
Membuat Komponen: Kamu bisa membuat komponen menggunakan Artisan console:
php artisan make:component AlertIni akan membuat class component di
app/View/Components/Alert.phpdan view component diresources/views/components/alert.blade.php. -
Menggunakan Komponen:
<x-alert type="success" message="Data berhasil disimpan." />
-
Dengan Blade, kamu bisa membuat tampilan yang dinamis, terstruktur, dan mudah dipelihara. Blade mempermudah pemisahan logika dan tampilan, membuat kode lebih bersih dan mudah dipahami.
6. Form Handling dan Validasi: Menangani Input Pengguna
Menangani form dan validasi input pengguna adalah bagian penting dari pengembangan aplikasi web. Laravel menyediakan fitur yang lengkap untuk mempermudah proses ini. Hal ini menjadi fokus dalam tutorial Laravel lengkap untuk pemula.
-
Membuat Form:
<form method="POST" action="/posts"> @csrf <label for="title">Title:</label><br> <input type="text" id="title" name="title"><br><br> <label for="content">Content:</label><br> <textarea id="content" name="content"></textarea><br><br> <input type="submit" value="Submit"> </form>@csrf: Menambahkan CSRF token untuk melindungi form dari serangan Cross-Site Request Forgery.
-
Menerima Input dari Form di Controller:
<?php namespace AppHttpControllers; use IlluminateHttpRequest; class PostController extends Controller { public function store(Request $request) { $title = $request->input('title'); $content = $request->input('content'); // Simpan data ke database } }Request $request: Menyuntikkan instance dari classRequestyang berisi data request dari pengguna.$request->input('title'): Mengambil nilai dari input dengan namatitle.
-
Validasi Input: Laravel menyediakan fitur validasi yang powerfull untuk memastikan data yang diterima dari pengguna valid.
-
Menggunakan Validator Facade:
<?php namespace AppHttpControllers; use IlluminateHttpRequest; use IlluminateSupportFacadesValidator; class PostController extends Controller { public function store(Request $request) { $validator = Validator::make($request->all(), [ 'title' => 'required|max:255', 'content' => 'required', ]); if ($validator->fails()) { return redirect('posts/create') ->withErrors($validator) ->withInput(); } // Simpan data ke database } }Validator::make($request->all(), [...]): Membuat instance dari validator dengan data request dan aturan validasi.'title' => 'required|max:255': Menentukan bahwa inputtitlewajib diisi (required) dan maksimal 255 karakter.'content' => 'required': Menentukan bahwa inputcontentwajib diisi.$validator->fails(): Memeriksa apakah validasi gagal.redirect('posts/create')->withErrors($validator)->withInput(): Mengarahkan kembali ke halaman form dengan pesan kesalahan dan data input yang sebelumnya diisi.
-
Menggunakan Form Request: Kamu juga bisa membuat Form Request class untuk memindahkan logika validasi ke class tersendiri.
php artisan make:request StorePostRequestIni akan membuat class
StorePostRequestdiapp/Http/Requests. Kamu bisa menambahkan aturan validasi di methodrules():<?php namespace AppHttpRequests; use IlluminateFoundationHttpFormRequest; class StorePostRequest extends FormRequest { public function authorize() { return true; // Sesuaikan dengan kebutuhan otorisasi } public function rules() { return [ 'title' => 'required|max:255', 'content' => 'required', ]; } }Kemudian, gunakan
StorePostRequestdi controller:<?php namespace AppHttpControllers; use AppHttpRequestsStorePostRequest; class PostController extends Controller { public function store(StorePostRequest $request) { // Simpan data ke database } }Laravel akan secara otomatis menjalankan validasi berdasarkan aturan yang didefinisikan di
StorePostRequest.
-
-
Menampilkan Pesan Kesalahan Validasi di View:
@if ($errors->any()) <div class="alert alert-danger"> <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif
Dengan fitur form handling dan validasi dari Laravel, kamu bisa memproses form dengan mudah dan memastikan data yang diterima valid. Ini akan meningkatkan keamanan dan kualitas aplikasi web kamu.
7. Middleware: Kontrol Akses dan Modifikasi Request/Response
Middleware adalah lapisan antara request dan response di Laravel. Middleware memungkinkan kamu memfilter HTTP request yang masuk ke aplikasi dan memodifikasi response yang keluar dari aplikasi. Middleware sangat penting untuk mengontrol akses ke route, memvalidasi otentikasi, atau menambahkan header ke response. Ini adalah salah satu konsep lanjutan yang akan dikenalkan dalam tutorial Laravel lengkap untuk pemula.
-
Membuat Middleware: Kamu bisa membuat middleware menggunakan Artisan console:
php artisan make:middleware CheckAgeIni akan membuat class middleware di
app/Http/Middleware/CheckAge.php. -
Contoh Middleware:
<?php namespace AppHttpMiddleware; use Closure; use IlluminateHttpRequest; class CheckAge { public function handle(Request $request, Closure $next) { if ($request->age < 200) { return redirect('home'); } return $next($request); } }public function handle(Request $request, Closure $next): Methodhandleadalah method utama di middleware. Method ini menerima request dan closure$next.$request: Objek request yang masuk.$next: Closure yang akan menjalankan request selanjutnya dalam pipeline.return redirect('home'): Jika kondisi tidak terpenuhi, middleware akan mengarahkan pengguna ke halamanhome.return $next($request): Jika kondisi terpenuhi, middleware akan melanjutkan request ke middleware selanjutnya atau route yang dituju.
-
Mendaftarkan Middleware:
- Global Middleware: Middleware yang dijalankan untuk setiap request. Didaftarkan di
app/Http/Kernel.phppada property$middleware.
protected $middleware = [ AppHttpMiddlewareTrustProxies::class, AppHttpMiddlewarePreventRequestsDuringMaintenance::class, IlluminateFoundationHttpMiddlewareValidatePostSize::class, AppHttpMiddlewareTrimStrings::class, IlluminateFoundationHttpMiddlewareConvertEmptyStringsToNull::class, ];- Route Middleware: Middleware yang hanya dijalankan untuk route tertentu. Didaftarkan di
app/Http/Kernel.phppada property$routeMiddleware.
protected $routeMiddleware = [ 'auth' => AppHttpMiddlewareAuthenticate::class, 'auth.basic' => IlluminateAuthMiddlewareAuthenticateWithBasicAuth::class, 'cache.headers' => IlluminateHttpMiddlewareSetCacheHeaders::class, 'can' => IlluminateAuthMiddlewareAuthorize::class, 'guest' => AppHttpMiddlewareRedirectIfAuthenticated::class, 'signed' => IlluminateRoutingMiddlewareValidateSignature::class, 'throttle' => IlluminateRoutingMiddlewareThrottleRequests::class, 'verified' => IlluminateAuthMiddlewareEnsureEmailIsVerified::class, 'checkage' => AppHttpMiddlewareCheckAge::class, // Daftar middleware CheckAge ]; - Global Middleware: Middleware yang dijalankan untuk setiap request. Didaftarkan di
-
Menggunakan Middleware di Route:
Route::get('/admin', function () { // Hanya bisa diakses oleh admin })->middleware('auth'); // Menggunakan middleware auth Route::get('/profile', function () { // Hanya bisa diakses oleh user yang berusia di atas 200 tahun (contoh) })->middleware('checkage'); // Menggunakan middleware checkage
Dengan middleware, kamu bisa mengontrol akses ke route dengan mudah dan menambahkan logika tambahan sebelum atau sesudah request diproses.
8. Authentication: Mengamankan Aplikasi dengan Autentikasi Pengguna
Autentikasi adalah proses memverifikasi identitas pengguna. Laravel menyediakan fitur autentikasi yang lengkap dan mudah digunakan. Bagian ini sangat penting dalam tutorial Laravel lengkap untuk pemula ini.
-
Scaffolding Autentikasi: Laravel menyediakan perintah untuk membuat scaffolding autentikasi secara otomatis:
php artisan ui:authPerintah ini akan membuat view, controller, dan route yang diperlukan untuk autentikasi (registrasi, login, logout, reset password).
Sebelum menjalankan perintah ini, pastikan kamu sudah menginstal
laravel/ui:composer require laravel/uiKamu juga perlu memilih frontend framework yang akan digunakan (Bootstrap, Vue, React):
php artisan ui bootstrap php artisan ui vue php artisan ui reactSetelah itu, jalankan
npm installdannpm run devuntuk menginstal dependency dan mengompilasi asset. -
Konfigurasi Autentikasi: Konfigurasi autentikasi terletak di
config/auth.php. Di sini kamu bisa menentukan guard (driver autentikasi) dan provider (cara mengambil data pengguna).'guards' => [ 'web' => [ 'driver' => 'session', 'provider' => 'users', ], 'api' => [ 'driver' => 'token', 'provider' => 'users', 'hash' => false, ], ], 'providers' => [ 'users' => [ 'driver' => 'eloquent', 'model' => AppModelsUser::class, ], ], -
Menggunakan Fitur Autentikasi:
-
Login:
use IlluminateSupportFacadesAuth; // Mencoba login if (Auth::attempt(['email' => $email, 'password' => $password])) { // Otentikasi berhasil return redirect()->intended('dashboard'); } // Otentikasi gagal return back()->withErrors([ 'email' => 'Email atau password salah.', ]); -
Logout:
use IlluminateSupportFacadesAuth; Auth::logout(); return redirect('/'); -
Memeriksa Apakah Pengguna Sudah Login:
use IlluminateSupportFacadesAuth; if (Auth::check()) { // Pengguna sudah login } else { // Pengguna belum login } -
Mendapatkan Data Pengguna yang Login:
use IlluminateSupportFacadesAuth; $user = Auth::user();
-
-
Otorisasi (Authorization): Otorisasi adalah proses menentukan apa yang boleh dilakukan oleh pengguna yang sudah terautentikasi. Laravel menyediakan fitur otorisasi yang powerfull menggunakan policies.
-
Membuat Policy:
php artisan make:policy PostPolicy --model=PostIni akan membuat class policy di
app/Policies/PostPolicy.php. -
Contoh Policy:
<?php namespace AppPolicies; use AppModelsUser; use AppModelsPost; use IlluminateAuthAccessHandlesAuthorization; class PostPolicy { use HandlesAuthorization; public function update(User $user, Post $post) { return $user->id === $post->user_id; } public function delete(User $user, Post $post) { return $user->id === $post->user_id; } }public function update(User $user, Post $post): Menentukan apakah pengguna$userboleh mengupdate post$post.public function delete(User $user, Post $post): Menentukan apakah pengguna$userboleh menghapus post$post.
-
Menggunakan Policy di Controller:
<?php namespace AppHttpControllers; use AppModelsPost; use IlluminateSupportFacadesGate; class PostController extends Controller { public function update(Post $post) { if (Gate::allows('update', $post)) { // Lanjutkan proses update } else { abort(403, 'Unauthorized action.'); } } public function destroy(Post $post) { if (Gate::allows('delete', $post)) { // Lanjutkan proses delete } else { abort(403, 'Unauthorized action.'); } } }Gate::allows('update', $post): Memeriksa apakah pengguna memiliki izin untuk melakukan actionupdateterhadap post$postberdasarkan policy.abort(403, 'Unauthorized action.'): Menghentikan eksekusi dengan kode status HTTP 403 (Forbidden) dan pesan kesalahan.
-
Dengan fitur autentikasi dan otorisasi dari Laravel, kamu bisa mengamankan aplikasi web kamu dengan mudah dan efektif.
9. Artisan Console: Mempermudah Pekerjaan dengan Command-Line
Artisan adalah command-line interface (CLI) yang disediakan oleh Laravel, memungkinkan kamu menjalankan berbagai perintah untuk mempermudah pengembangan aplikasi. Bagian ini akan menunjukkan bagaimana Artisan dapat membantu dalam tutorial Laravel lengkap untuk pemula ini.
-
Perintah-Perintah Artisan:
php artisan make:controller NamaController: Membuat controller baru.php artisan make:model NamaModel: Membuat model baru.php artisan make:migration create_nama_tabel_table: Membuat migration baru.php artisan migrate: Menjalankan migration (membuat tabel di database).php artisan migrate:rollback: Membatalkan migration terakhir.php artisan make:seeder NamaSeeder: Membuat seeder baru.php artisan db:seed: Menjalankan seeder (mengisi data ke database).php artisan make:factory NamaFactory: Membuat factory baru.php artisan tinker: Membuka REPL (Read-Eval-Print Loop) untuk berinteraksi dengan aplikasi.php artisan cache:clear: Membersihkan cache aplikasi.php artisan config:cache: Membuat cache konfigurasi.php artisan route:list: Menampilkan daftar route yang terdaftar.php artisan optimize:clear: Membersihkan cache konfigurasi dan route.php artisan queue:work: Menjalankan queue worker.
-
Membuat Perintah Artisan Sendiri: Kamu juga bisa membuat perintah Artisan sendiri untuk mempermudah tugas-tugas tertentu.
-
php artisan make:command NamaCommand: Membuat command baru. -
Contoh Command:
<?php namespace AppConsoleCommands; use IlluminateConsoleCommand; class BackupDatabase extends Command { protected $signature = 'db:backup {--filename=}'; protected $description = 'Backup database to a file'; public function handle() { $filename = $this->option('filename') ?? 'backup-' . date('Y-m-d') . '.sql'; $command = sprintf( 'mysqldump -u%s -p%s %s > %s', config('database.connections.mysql.username'),
-