Laravel adalah framework PHP yang populer di kalangan developer web. Kenapa? Karena Laravel menyediakan struktur yang rapi, fitur yang lengkap, dan komunitas yang solid. Jika kamu tertarik membangun aplikasi web modern dan efisien, belajar Laravel adalah pilihan yang tepat. Artikel ini akan menjadi panduan materi belajar Laravel lengkap bahasa Indonesia, membantumu memulai dari dasar hingga mampu membuat aplikasi web yang kompleks. Yuk, kita mulai!
1. Mengapa Memilih Laravel? (Keunggulan Laravel untuk Pengembangan Web)
Sebelum kita masuk ke materi belajar Laravel lengkap bahasa Indonesia, mari kita pahami dulu, kenapa sih Laravel begitu populer? Ada beberapa alasan utama:
- Struktur yang Rapi (MVC Architecture): Laravel mengikuti pola desain Model-View-Controller (MVC). Ini memisahkan logika aplikasi, tampilan, dan data, membuat kode lebih mudah dibaca, dipelihara, dan diuji.
- Fitur Lengkap: Laravel hadir dengan banyak fitur bawaan seperti routing, templating, authentication, authorization, ORM (Eloquent), dan masih banyak lagi. Ini mempercepat proses pengembangan secara signifikan.
- Keamanan: Laravel sangat memperhatikan keamanan. Fitur-fitur seperti CSRF protection, XSS filtering, dan password hashing sudah tersedia secara default, membantu kamu melindungi aplikasi dari ancaman keamanan.
- Eloquent ORM: Eloquent ORM mempermudah interaksi dengan database. Kamu bisa melakukan operasi CRUD (Create, Read, Update, Delete) dengan kode PHP yang lebih intuitif dan mudah dipahami.
- Templating Engine (Blade): Blade adalah templating engine yang kuat dan fleksibel. Memungkinkan kamu membuat tampilan yang dinamis dengan sintaks yang sederhana dan elegan.
- Artisan Console: Artisan adalah command-line interface (CLI) yang sangat berguna. Kamu bisa menggunakan Artisan untuk membuat controller, model, migration, dan berbagai task lainnya dengan cepat.
- Komunitas yang Solid: Laravel memiliki komunitas developer yang besar dan aktif. Kamu bisa menemukan banyak sumber daya, tutorial, dan bantuan jika mengalami kesulitan.
- Dokumentasi yang Lengkap: Dokumentasi Laravel sangat lengkap dan terstruktur dengan baik. Ini memudahkan kamu untuk mempelajari dan menggunakan fitur-fitur Laravel.
Dengan semua keunggulan ini, Laravel menjadi pilihan yang sangat menarik bagi developer web, baik pemula maupun profesional. Jadi, sudah siap untuk memulai materi belajar Laravel lengkap bahasa Indonesia?
2. Persiapan Awal: Instalasi dan Konfigurasi Laravel (Langkah Demi Langkah)
Oke, sekarang mari kita siapkan lingkungan pengembangan dan instal Laravel. Ini adalah langkah penting dalam materi belajar Laravel lengkap bahasa Indonesia.
Persyaratan Sistem:
- PHP: Versi 8.0.2 atau lebih tinggi. Pastikan ekstensi PHP berikut terpasang: Ctype, cURL, DOM, Fileinfo, Filter, Hash, mbstring, OpenSSL, PDO, Tokenizer, XML, dan JSON.
- Composer: Manajer dependency untuk PHP. Unduh dan instal di sini.
- Database: MySQL, PostgreSQL, SQLite, atau SQL Server.
- Web Server: Apache atau Nginx.
Langkah-langkah Instalasi:
-
Instalasi Composer: Pastikan Composer sudah terinstal dengan benar. Buka terminal atau command prompt, lalu ketik
composer -v
. Jika Composer terinstal, kamu akan melihat versinya. -
Buat Proyek Laravel: Buka terminal dan navigasi ke direktori tempat kamu ingin menyimpan proyek Laravel. Kemudian, jalankan perintah berikut:
composer create-project --prefer-dist laravel/laravel nama-proyek
Ganti
nama-proyek
dengan nama yang kamu inginkan. Misalnya:composer create-project --prefer-dist laravel/laravel belajar-laravel
. -
Navigasi ke Direktori Proyek: Setelah instalasi selesai, navigasi ke direktori proyek:
cd nama-proyek
Misalnya:
cd belajar-laravel
. -
Konfigurasi Database: Buka file
.env
di direktori proyek. Cari bagian yang berkaitan dengan konfigurasi database dan ubah sesuai dengan pengaturan database kamu:DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=nama_database DB_USERNAME=nama_pengguna DB_PASSWORD=kata_sandi
Ganti
nama_database
,nama_pengguna
, dankata_sandi
dengan informasi yang sesuai. Pastikan database sudah dibuat di server database kamu. -
Jalankan Server Pengembangan: Laravel menyediakan server pengembangan bawaan. Jalankan perintah berikut untuk menjalankannya:
php artisan serve
Buka browser kamu dan kunjungi
http://localhost:8000
. Jika kamu melihat halaman selamat datang Laravel, berarti instalasi berhasil!
Tips:
- Jika kamu menggunakan XAMPP atau Laragon, pastikan server sudah berjalan sebelum menjalankan
php artisan serve
. - Pastikan ekstensi PHP yang dibutuhkan sudah terpasang. Kamu bisa memeriksa ekstensi yang terpasang dengan menjalankan perintah
php -m
. - Jika terjadi error, periksa log Laravel di
storage/logs/laravel.log
untuk mengetahui penyebabnya.
Dengan mengikuti langkah-langkah ini, kamu sudah berhasil menyiapkan lingkungan pengembangan dan menginstal Laravel. Sekarang, kita bisa melanjutkan ke materi belajar Laravel lengkap bahasa Indonesia berikutnya!
3. Routing di Laravel: Mengatur Alamat Web (Memahami Route dan Controller)
Routing adalah salah satu konsep dasar dalam Laravel. Routing menentukan bagaimana aplikasi merespon permintaan HTTP yang masuk. Ini adalah bagian penting dalam materi belajar Laravel lengkap bahasa Indonesia.
Mendefinisikan Route:
Route didefinisikan di dalam file routes/web.php
(untuk route web) atau routes/api.php
(untuk route API). Berikut adalah contoh sederhana route:
<?php
use IlluminateSupportFacadesRoute;
Route::get('/', function () {
return view('welcome');
});
Route ini mendefinisikan bahwa ketika pengguna mengunjungi root URL (/
), aplikasi akan menampilkan view bernama welcome
.
Jenis-jenis Route:
Laravel mendukung berbagai jenis route HTTP, termasuk:
Route::get($uri, $callback);
– Untuk permintaan GETRoute::post($uri, $callback);
– Untuk permintaan POSTRoute::put($uri, $callback);
– Untuk permintaan PUTRoute::patch($uri, $callback);
– Untuk permintaan PATCHRoute::delete($uri, $callback);
– Untuk permintaan DELETERoute::options($uri, $callback);
– Untuk permintaan OPTIONSRoute::any($uri, $callback);
– Untuk semua jenis permintaan
Route dengan Parameter:
Kamu bisa mendefinisikan route dengan parameter. Misalnya:
Route::get('/user/{id}', function ($id) {
return 'User ID: ' . $id;
});
Ketika pengguna mengunjungi /user/123
, aplikasi akan menampilkan “User ID: 123”.
Controller:
Sebaiknya, logika aplikasi dipisahkan dari route. Kita menggunakan controller untuk menangani logika aplikasi. Berikut adalah contoh penggunaan controller:
Route::get('/users', [UserController::class, 'index']);
Route ini mendefinisikan bahwa ketika pengguna mengunjungi /users
, aplikasi akan menjalankan metode index
pada controller UserController
.
Membuat Controller:
Kamu bisa membuat controller menggunakan Artisan:
php artisan make:controller UserController
Ini akan membuat file UserController.php
di direktori app/Http/Controllers
.
Contoh Controller:
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
class UserController extends Controller
{
public function index()
{
$users = ['John', 'Jane', 'Doe'];
return view('users.index', ['users' => $users]);
}
}
Controller ini mengambil data pengguna dan mengirimkannya ke view users.index
.
Resource Controller:
Laravel menyediakan resource controller untuk menangani operasi CRUD pada sumber daya. Untuk membuat resource controller:
php artisan make:controller UserController --resource
Ini akan membuat controller dengan metode-metode standar seperti index
, create
, store
, show
, edit
, update
, dan destroy
.
Memahami routing dan controller sangat penting dalam materi belajar Laravel lengkap bahasa Indonesia. Dengan ini, kamu bisa mengatur bagaimana aplikasi merespon permintaan pengguna dan memisahkan logika aplikasi dengan baik.
4. Blade Templating Engine: Membuat Tampilan yang Dinamis (Sintaks Blade dan Layout)
Blade adalah templating engine bawaan Laravel yang memungkinkan kamu membuat tampilan yang dinamis dengan sintaks yang sederhana dan elegan. Ini adalah bagian penting dari materi belajar Laravel lengkap bahasa Indonesia.
Sintaks Blade:
Blade menggunakan sintaks yang mudah dibaca dan dipahami. Berikut adalah beberapa contoh sintaks Blade:
-
Menampilkan Variabel:
{{ $variable }}
-
Pernyataan IF:
@if ($condition) // Kode yang dijalankan jika kondisi benar @else // Kode yang dijalankan jika kondisi salah @endif
-
Looping (Foreach):
@foreach ($items as $item) // Kode yang dijalankan untuk setiap item @endforeach
-
Looping (For):
@for ($i = 0; $i < 10; $i++) // Kode yang dijalankan @endfor
-
Menampilkan Data yang Tidak Di-escape:
{!! $variable !!}
(Hati-hati dalam menggunakan ini, karena bisa menyebabkan kerentanan XSS)
Layouts:
Layout memungkinkan kamu membuat struktur tampilan yang konsisten di seluruh aplikasi. Kamu bisa membuat layout utama dan menggunakannya di view lainnya.
Contoh Layout (resources/views/layouts/app.blade.php):
<!DOCTYPE html>
<html>
<head>
<title>@yield('title')</title>
<link rel="stylesheet" href="{{ asset('css/app.css') }}">
</head>
<body>
<div class="container">
@yield('content')
</div>
<script src="{{ asset('js/app.js') }}"></script>
</body>
</html>
@yield('title')
digunakan untuk menampilkan judul halaman.@yield('content')
digunakan untuk menampilkan konten halaman.{{ asset('css/app.css') }}
dan{{ asset('js/app.js') }}
digunakan untuk menampilkan asset (file CSS dan JavaScript).
Menggunakan Layout (resources/views/welcome.blade.php):
@extends('layouts.app')
@section('title', 'Selamat Datang')
@section('content')
<h1>Selamat Datang di Aplikasi Saya!</h1>
<p>Ini adalah halaman utama.</p>
@endsection
@extends('layouts.app')
menunjukkan bahwa view ini menggunakan layoutlayouts/app.blade.php
.@section('title', 'Selamat Datang')
mengisi bagiantitle
di layout.@section('content')
mengisi bagiancontent
di layout.
Components:
Blade juga mendukung components. Components adalah cara untuk membuat potongan kode tampilan yang bisa digunakan kembali.
Membuat Component (app/View/Components/Alert.php):
<?php
namespace AppViewComponents;
use IlluminateViewComponent;
class Alert extends Component
{
public $type;
public $message;
public function __construct($type, $message)
{
$this->type = $type;
$this->message = $message;
}
public function render()
{
return view('components.alert');
}
}
View Component (resources/views/components/alert.blade.php):
<div class="alert alert-{{ $type }}">
{{ $message }}
</div>
Menggunakan Component:
<x-alert type="success" message="Operasi berhasil!"></x-alert>
Dengan Blade, kamu bisa membuat tampilan yang dinamis, terstruktur, dan mudah dipelihara. Ini adalah kemampuan penting dalam materi belajar Laravel lengkap bahasa Indonesia.
5. Eloquent ORM: Interaksi dengan Database (Model, Migration, dan Seeder)
Eloquent ORM (Object-Relational Mapper) adalah fitur Laravel yang mempermudah interaksi dengan database. Dengan Eloquent, kamu bisa melakukan operasi CRUD (Create, Read, Update, Delete) dengan kode PHP yang lebih intuitif dan mudah dipahami. Ini adalah bagian krusial dalam materi belajar Laravel lengkap bahasa Indonesia.
Model:
Model merepresentasikan tabel di database. Untuk membuat model:
php artisan make:model User
Ini akan membuat file User.php
di direktori app/Models
.
Contoh Model (app/Models/User.php):
<?php
namespace AppModels;
use IlluminateDatabaseEloquentFactoriesHasFactory;
use IlluminateDatabaseEloquentModel;
class User extends Model
{
use HasFactory;
protected $table = 'users'; // Nama tabel (opsional)
protected $primaryKey = 'id'; // Kolom primary key (opsional)
protected $fillable = ['name', 'email', 'password']; // Kolom yang boleh diisi
protected $hidden = ['password', 'remember_token']; // Kolom yang disembunyikan
}
$table
digunakan untuk menentukan nama tabel. Jika tidak didefinisikan, Laravel akan menggunakan nama model dalam bentuk plural (misalnya,User
menjadiusers
).$primaryKey
digunakan untuk menentukan kolom primary key. Jika tidak didefinisikan, Laravel akan mengasumsikan kolom bernamaid
.$fillable
menentukan kolom mana yang boleh diisi melalui mass assignment (misalnya, saat menggunakancreate()
atauupdate()
).$hidden
menentukan kolom mana yang disembunyikan saat model dikonversi ke array atau JSON.
Migration:
Migration digunakan untuk membuat dan memodifikasi struktur database menggunakan kode PHP. Untuk membuat migration:
php artisan make:migration create_users_table
Ini akan membuat file migration di direktori database/migrations
.
Contoh Migration (database/migrations/xxxx_xx_xx_xxxxxx_create_users_table.php):
<?php
use IlluminateDatabaseMigrationsMigration;
use IlluminateDatabaseSchemaBlueprint;
use IlluminateSupportFacadesSchema;
class CreateUsersTable extends Migration
{
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
}
public function down()
{
Schema::dropIfExists('users');
}
}
- Metode
up()
digunakan untuk membuat tabel. - Metode
down()
digunakan untuk menghapus tabel (untuk rollback).
Untuk menjalankan migration:
php artisan migrate
Untuk rollback migration terakhir:
php artisan migrate:rollback
Seeder:
Seeder digunakan untuk mengisi database dengan data awal. Untuk membuat seeder:
php artisan make:seeder UserSeeder
Ini akan membuat file seeder di direktori database/seeders
.
Contoh Seeder (database/seeders/UserSeeder.php):
<?php
namespace DatabaseSeeders;
use IlluminateDatabaseSeeder;
use AppModelsUser;
use IlluminateSupportFacadesHash;
class UserSeeder extends Seeder
{
public function run()
{
User::create([
'name' => 'Admin',
'email' => '[email protected]',
'password' => Hash::make('password'),
]);
}
}
Untuk menjalankan seeder:
php artisan db:seed
Untuk menjalankan seeder tertentu:
php artisan db:seed --class=UserSeeder
Menggunakan Eloquent:
Berikut adalah contoh penggunaan Eloquent untuk melakukan operasi CRUD:
-
Create:
$user = new User(); $user->name = 'John Doe'; $user->email = '[email protected]'; $user->password = Hash::make('password'); $user->save(); // Atau menggunakan mass assignment: $user = User::create([ 'name' => 'Jane Doe', 'email' => '[email protected]', 'password' => Hash::make('password'), ]);
-
Read:
$user = User::find(1); // Mencari user dengan ID 1 $user = User::where('email', '[email protected]')->first(); // Mencari user berdasarkan email $users = User::all(); // Mengambil semua user
-
Update:
$user = User::find(1); $user->name = 'Updated Name'; $user->save(); // Atau menggunakan mass assignment: User::where('id', 1)->update(['name' => 'Updated Name']);
-
Delete:
$user = User::find(1); $user->delete(); // Atau: User::destroy(1);
Eloquent ORM sangat mempermudah interaksi dengan database di Laravel. Dengan model, migration, dan seeder, kamu bisa mengelola data aplikasi dengan lebih efisien. Ini adalah keterampilan penting dalam materi belajar Laravel lengkap bahasa Indonesia.
6. Authentication dan Authorization: Mengamankan Aplikasi Web (Login, Register, dan Hak Akses)
Authentication (otentikasi) dan authorization (otorisasi) adalah dua aspek penting dalam mengamankan aplikasi web. Authentication memastikan bahwa pengguna adalah siapa yang mereka klaim, sedangkan authorization menentukan apa yang boleh dan tidak boleh diakses oleh pengguna tersebut. Ini adalah bagian krusial dalam materi belajar Laravel lengkap bahasa Indonesia.
Authentication:
Laravel menyediakan fitur authentication yang sangat mudah digunakan. Kamu bisa menggunakan perintah Artisan untuk membuat scaffolding authentication:
php artisan make:auth
Untuk Laravel versi 9 ke atas, scaffolding authentication tidak termasuk dalam default. Kamu perlu menginstal laravel/ui
terlebih dahulu:
composer require laravel/ui
php artisan ui bootstrap --auth // Atau php artisan ui vue --auth atau php artisan ui react --auth
npm install && npm run dev // Atau yarn install && yarn run dev
Ini akan membuat view, route, dan controller yang diperlukan untuk login, register, dan reset password.
Setelah menjalankan perintah di atas, kamu perlu menjalankan migration untuk membuat tabel users
:
php artisan migrate
Sekarang kamu bisa mengakses halaman /login
dan /register
untuk mencoba fitur authentication.
Custom Authentication:
Jika kamu ingin mengkustomisasi proses authentication, kamu bisa membuat guard dan provider sendiri. Guard menentukan bagaimana pengguna diotentikasi, sedangkan provider menentukan bagaimana data pengguna diambil dari database.
Authorization:
Laravel menyediakan fitur authorization untuk mengontrol akses ke sumber daya aplikasi. Kamu bisa mendefinisikan policy untuk menentukan siapa yang boleh melakukan apa.
Membuat Policy:
php artisan make:policy PostPolicy --model=Post
Ini akan membuat file PostPolicy.php
di direktori app/Policies
.
Contoh Policy (app/Policies/PostPolicy.php):
<?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;
}
}
- Metode
update()
menentukan apakah pengguna boleh mengedit post. - Metode
delete()
menentukan apakah pengguna boleh menghapus post.
Menggunakan Policy:
Kamu bisa menggunakan policy di controller atau view.
Contoh di Controller:
<?php
namespace AppHttpControllers;
use AppModelsPost;
use IlluminateHttpRequest;
class PostController extends Controller
{
public function __construct()
{
$this->authorizeResource(Post::class, 'post');
}
public function update(Request $request, Post $post)
{
$this->authorize('update', $post); // Atau menggunakan $this->authorizeResource() di constructor
// ...
}
public function destroy(Post $post)
{
$this->authorize('delete', $post); // Atau menggunakan $this->authorizeResource() di constructor
// ...
}
}
$this->authorizeResource()
secara otomatis mengaitkan policy dengan resource controller.$this->authorize('update', $post)
memeriksa apakah pengguna boleh mengedit post.$this->authorize('delete', $post)
memeriksa apakah pengguna boleh menghapus post.
Contoh di View:
@can('update', $post)
<a href="/posts/{{ $post->id }}/edit">Edit</a>
@endcan
@can('delete', $post)
<form action="/posts/{{ $post->id }}" method="POST">
@csrf
@method('DELETE')
<button type="submit">Hapus</button>
</form>
@endcan
@can('update', $post)
menampilkan tautan “Edit” hanya jika pengguna boleh mengedit post.@can('delete', $post)
menampilkan tombol “Hapus” hanya jika pengguna boleh menghapus post.
Dengan authentication dan authorization, kamu bisa mengamankan aplikasi web Laravel dan memastikan bahwa hanya pengguna yang berhak yang bisa mengakses sumber daya tertentu. Ini adalah bagian penting dari materi belajar Laravel lengkap bahasa Indonesia.
7. Form Validation: Memvalidasi Input Pengguna (Validasi Sisi Server dan Sisi Klien)
Validasi form sangat penting untuk memastikan bahwa data yang dimasukkan pengguna valid dan sesuai dengan format yang diharapkan. Laravel menyediakan fitur validasi yang kuat dan fleksibel. Ini adalah bagian penting dalam materi belajar Laravel lengkap bahasa Indonesia.
Validasi Sisi Server:
Validasi sisi server dilakukan di controller setelah form di-submit. Laravel menyediakan validator yang mudah digunakan.
Contoh Validasi di Controller:
<?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',
'body' => 'required',
]);
if ($validator->fails()) {
return redirect('posts/create')
->withErrors($validator)
->withInput();
}
// Jika validasi berhasil, simpan data ke database
// ...
}
}
Validator::make()
membuat validator dengan data dari request dan aturan validasi.$validator->fails()
memeriksa apakah validasi gagal.$validator->errors()
mengembalikan pesan error.withErrors($validator)
mengirimkan pesan error ke view.withInput()
mengirimkan data input ke view agar pengguna tidak perlu mengisi form dari awal.
Aturan Validasi:
Laravel menyediakan banyak aturan validasi bawaan, seperti:
required
: Wajib diisimax:n
: Panjang maksimum n karaktermin:n
: Panjang minimum n karakteremail
: Format email yang validunique:table,column
: Nilai harus unik di tabel dan kolom tertentunumeric
: Harus angkainteger
: Harus bilangan bulatboolean
: Harus booleandate
: Harus tanggal yang validconfirmed
: Harus sama dengan fieldfield_confirmation
- Dan masih banyak lagi
Menampilkan Pesan Error di View:
Kamu bisa menampilkan pesan error di view menggunakan directive @error
:
<div class="form-group">
<label for="title">Judul</label>
<input type="text" class="form-control @error('title') is-invalid @enderror" id="title" name="title" value="{{ old('title') }}">
@error('title')
<div class="invalid-feedback">{{ $message }}</div>
@enderror
</div>
@error('title')
menampilkan pesan error untuk fieldtitle
.is-invalid
adalah class Bootstrap untuk menandai input yang tidak valid.old('title')
menampilkan nilai input sebelumnya jika ada.
Validasi Sisi Klien:
Validasi sisi klien dilakukan di browser sebelum form di-submit. Ini memberikan feedback langsung kepada pengguna dan mengurangi beban server.
Kamu bisa menggunakan JavaScript untuk melakukan validasi sisi klien. Ada banyak library validasi JavaScript yang tersedia, seperti jQuery Validation Plugin.
Contoh Validasi Sisi Klien dengan HTML5:
HTML5 menyediakan beberapa atribut validasi bawaan, seperti:
required
: Wajib diisimaxlength
: Panjang maksimumminlength
: Panjang minimumtype="email"
: Format emailtype="number"
: Format angka
<div class="form-group">
<label for="title">Judul</label>
<input type="text" class="form-control" id="title" name="title" required maxlength="255">
</div>
Dengan validasi form, kamu bisa memastikan bahwa data yang dimasukkan pengguna valid dan sesuai dengan format yang diharapkan. Ini membantu menjaga kualitas data aplikasi dan mencegah error. Ini adalah keterampilan penting dalam materi belajar Laravel lengkap bahasa Indonesia.
8. Penggunaan Artisan Console: Mempercepat Pengembangan (Command-line Tools)
Artisan adalah command-line interface (CLI) yang sangat berguna dalam Laravel. Dengan Artisan, kamu bisa melakukan banyak task pengembangan dengan cepat dan mudah. Ini adalah bagian penting dalam materi belajar Laravel lengkap bahasa Indonesia.
Perintah Dasar Artisan:
Untuk melihat daftar semua perintah Artisan:
php artisan list
Beberapa perintah Artisan yang sering digunakan:
php artisan make:controller NamaController
: Membuat controllerphp artisan make:model NamaModel
: Membuat modelphp artisan make:migration create_nama_tabel_table
: Membuat migrationphp artisan make:seeder NamaSeeder
: Membuat seederphp artisan make:policy NamaPolicy --model=NamaModel
: Membuat policyphp artisan make:command NamaCommand
: Membuat custom commandphp artisan migrate
: Menjalankan semua migrationphp artisan migrate:rollback
: Rollback migration terakhirphp artisan db:seed
: Menjalankan semua seederphp artisan cache:clear
: Membersihkan cache aplikasiphp artisan config:cache
: Membuat cache konfigurasiphp artisan route:list
: Menampilkan daftar routephp artisan tinker
: Membuka REPL (Read-Eval-Print Loop) untuk berinteraksi dengan aplikasi
Membuat Custom Command:
Kamu bisa membuat custom command untuk melakukan task tertentu.
Contoh Membuat Custom Command:
php artisan make:command SendEmails
Ini akan membuat file SendEmails.php
di direktori app/Console/Commands
.
Contoh Isi Custom Command (app/Console/Commands/SendEmails.php):
<?php
namespace AppConsoleCommands;
use IlluminateConsoleCommand;
class SendEmails extends Command
{
protected $signature = 'emails:send {--queue}';
protected $description = 'Send emails to users';
public function handle()
{
if ($this->option('queue')) {
// Kirim email menggunakan queue
$this->info('Sending emails via queue...');
} else {
// Kirim email secara langsung
$this->info('Sending emails directly...');
}
}
}
$signature
mendefinisikan nama command dan option.$description
memberikan deskripsi tentang command.handle()
adalah metode yang dijalankan ketika command dieksekusi.
Untuk menjalankan custom command:
php artisan emails:send
php artisan emails:send --queue
Artisan Console sangat membantu dalam mempercepat proses pengembangan di Laravel. Dengan command yang sudah tersedia dan kemampuan untuk membuat custom command, kamu bisa melakukan banyak task dengan lebih efisien. Ini adalah keterampilan penting dalam materi belajar Laravel lengkap bahasa Indonesia.
9. Testing di Laravel: Memastikan Kualitas Kode (Unit Test dan Feature Test)
Testing adalah bagian penting dari pengembangan perangkat lunak. Dengan melakukan testing, kamu bisa memastikan bahwa kode yang kamu tulis berfungsi dengan benar dan sesuai dengan yang diharapkan. Laravel menyediakan fitur testing yang lengkap dan mudah digunakan. Ini adalah bagian penting dalam materi belajar Laravel lengkap bahasa Indonesia.
Jenis-jenis Testing:
Ada dua jenis testing utama di Laravel:
- Unit Test: Menguji unit kode terkecil, seperti metode atau class.
- Feature Test: Menguji fitur aplikasi secara keseluruhan, seperti login, register, atau crud.
Konfigurasi Testing:
File konfigurasi testing terletak di phpunit.xml
. Kamu bisa mengubah pengaturan seperti database testing, environment variables, dan lain-lain.
Membuat Test:
Kamu bisa membuat test menggunakan Artisan:
php artisan make:test UserTest
php artisan make:test UserTest --unit
php artisan make:test UserTest
membuat feature test.php artisan make:test UserTest --unit
membuat unit test.
Test akan dibuat di direktori tests/Feature
(untuk feature test) atau tests/Unit
(untuk unit test).
Contoh Unit Test (tests/Unit/UserTest.php):
<?php
namespace TestsUnit;
use TestsTestCase;
use AppModelsUser;
class UserTest extends TestCase
{
public function test_user_can_be_created()
{
$user = User::factory()->create([
'name' => 'John Doe',
'email' => '[email protected]',
'password' => bcrypt('password'),
]);
$this->assertDatabaseHas('users', [
'email' => '[email protected]',
]);
$this->assertEquals('John Doe', $user->name);
}
}
User::factory()->create()
membuat user menggunakan factory.$this->assertDatabaseHas()
memeriksa apakah data ada di database.$this->assertEquals()
memeriksa apakah nilai sama.
Contoh Feature Test (tests/Feature/UserTest.php):
<?php
namespace TestsFeature;
use IlluminateFoundationTestingRefreshDatabase;
use IlluminateFoundationTestingWithFaker;
use TestsTestCase;
use AppModelsUser;
class UserTest extends TestCase
{
use RefreshDatabase;
public function test_user_can_view_profile()
{
$user = User::factory()->create();
$response = $this->actingAs($user)
->get('/profile');
$response->assertStatus(200);
$response->assertSee($user->name);
}
}
use RefreshDatabase
me-refresh database sebelum setiap test dijalankan.$this->actingAs($user)
membuat request seolah-olah user sudah login.$response->assertStatus(200)
memeriksa apakah response memiliki status kode 200 (OK).$response->assertSee($user->name)
memeriksa apakah response mengandung nama user.
Menjalankan Test:
Untuk menjalankan semua test:
php artisan test
Untuk menjalankan test tertentu:
php artisan test tests/Unit/UserTest.php
php artisan test --filter UserTest
Test-Driven Development (TDD):
TDD adalah pendekatan pengembangan di mana kamu menulis test sebelum menulis kode implementasi. Ini membantu kamu fokus pada apa yang ingin kamu capai dan memastikan bahwa kode yang kamu tulis benar-benar berfungsi.
Dengan testing, kamu bisa memastikan bahwa kode yang kamu tulis berkualitas tinggi dan berfungsi dengan benar. Ini membantu mengurangi bug dan membuat aplikasi lebih stabil dan mudah dipelihara. Ini adalah keterampilan penting dalam materi belajar Laravel lengkap bahasa Indonesia.
10. Deployment Laravel: Mempublikasikan Aplikasi Web (Server, Hosting, dan Konfigurasi)
Setelah selesai mengembangkan aplikasi web Laravel, langkah selanjutnya adalah deployment, yaitu mempublikasikan aplikasi agar bisa diakses oleh pengguna. Ini adalah langkah terakhir dalam materi belajar Laravel lengkap bahasa Indonesia.
Pilihan Hosting:
Ada banyak pilihan hosting yang tersedia untuk aplikasi Laravel, termasuk:
- Shared Hosting: Hosting termurah dan paling sederhana, cocok untuk aplikasi kecil dan menengah.
- Virtual Private Server (VPS): Memberikan kontrol lebih besar daripada shared hosting, cocok untuk aplikasi yang membutuhkan sumber daya lebih banyak.
- Cloud Hosting: Fleksibel dan scalable, cocok untuk aplikasi yang membutuhkan uptime tinggi dan sumber daya yang dinamis.
- Platform as a Service (PaaS): Seperti Heroku, AWS Elastic Beanstalk, atau Google App Engine, mempermudah deployment dan scaling.
Konfigurasi Server:
Jika kamu menggunakan VPS atau cloud hosting, kamu perlu mengkonfigurasi server sendiri. Beberapa langkah konfigurasi umum:
- Instalasi Web Server (Apache atau Nginx):
- Apache:
sudo apt update && sudo apt install apache2
(Ubuntu/Debian) - Nginx:
sudo apt update && sudo apt install nginx
(Ubuntu/Debian)
- Apache:
- Instalasi PHP:
sudo apt install php php-cli php-fpm php-mysql php-gd php-mbstring php-xml php-zip
(Ubuntu/Debian) - **Inst